The best way I've found to do this is to have separate projects for each specific application. This keeps things well separated.
Set up a directory structure to use for the application that's something like this.
Source
Common
Libs
Progs
etc., etc.
GenericSite
Libs
Progs
etc., etc.
Site1
Libs
Progs
etc., etc.
Site2
Libs
Progs
etc., etc.
Set up the GenericSite project to include the common files (libs, progs, reports, etc) and the necessary app level subclasses off the Common libs that will need to go to all objects. e.g.
CD \source\genericsite
CREATE CLASS genericclass1 OF libs\genericlib AS commonclass1 FROM ..\common\libs\commonlib
It also helps to have some sort of development environment setup program in the GenericSite root directory which will SET PATH TO the common directories and the app subdirectories, as well as any other settings that you may want.
When you need a new specific site, copy the GenericSite directory with subdirectories and rename it to the name of the site, like the Site1 and Site2 directories in the above example. You can rename the project as well, if you like.
Of course, the directory structure I have above is just a model, but the relative location of the Common files must be the same from all app specific directories so there are no problems with subclasses finding parent classes and no problem with site projects finding their files.
HTH
Insanity: Doing the same thing over and over and expecting different results.