Designing for flexibility is a key skill as a programmer. After years of playing chess and reading civil way histories and despite years of psychotherapy I tend to see software design as a battle and we're on defense. Sure, it's easy to build defenses that can withstand a head on assault, but usually that wave is just a ruse that the enemy has devised as a distraction. It's just a matter of time before they let loose with their flanking maneuvers and if you're unprepared they'll snap your forces in two like an old toothpick. A good defense means building structures that meet the layout of the geography yet flexible enough to withstand what attacks the enemy might devise. And, believe you me, I'm ready... oh yes... me and Mister Felps (waves little stuffed pink bunny) are just waiting for them, isn't that right Mister Felps.... they come anywhere near this cubicle and we shall UNLEASH HELL!!!