I think there is a balance to all this, and it may very much depend on the application. The observation about one large hunk of code being compiled even if only a little subset is used is an excellent one. On the other hand, having a bunch of files strewn around is not very portable or standalone, ie., may not be convenient. The happy medium for me is indeed the (admittedly) simplest case of a few-file system: module(s) and driver. Extracting generic functionality and modifying/calling upon it as needed in a script. You may also find the autouse pragma and the AutoSplit namespace useful in your implementations.