>There's some good advice in this thread, but a word of warning; you can be too clever, or make things too dynamic, and all at the expense of integrity of the application in the future. You can find yourself in a situation, further down the line, where the framework becomes top heavy and it loses all of it's strength as you're constantly developing work-arounds to prevent changes from affecting one or more of the versions within your framework.
>
>There's much to be said about finding a balance between complexity/inheritance and good old stand-alone development; the ideal position is somewhere between the two.
Or not between at all, but by taking it in a different direction. Reduce the complexity by reducing the number of mechanisms in the framework, take a reduced set of controls, reduced interface and simplify the database. Make it light - and then play the songs for the asking using those simple tools. I've seen it done a few times (and did myself, once), just like I've seen what you said.
The art of making it simple does take some thought, maybe instinct and a few burned fingers :).