The way I see this is not having several versions of AutoItSC.bin, but several libraries that get linked based on what is needed. For example, AutoItSC.bin would have the core functionality, AutoItGUI.bin would have the functionality for GUI creation functions, AutoItTCP.bin would have the TCP functions, AutoItRegExp.bin would have the Regular Express stuff (it is not that small either), AutoItParse.bin would have the have the parsing code, etc. Only those parts that are needed based on what functions are called in the script would be linked into the executable. If Execute() is used, all bets are out the window and everything will need to be included, just in case somebody calls pretty much anything, but otherwise we could leave out the parts that are not needed, without having lots of sections. Hmm, how to do this? Have a dispatch table that looks into the various libraries. If a library is not called, just drop it. But each library will need to be dynamically linked in order to do this. Nuts, we would need to have all the .bin's above be .dll instead, that automagically install at the start of run (first checking if the DLL's already exist), which could slow things down a lot. Hmm, What are we doing for plug-ins?