Recently, I had a requirement to put together a website that deals with taking somewhat elaborate financial surveys. While the questions and answers themselves are good candidates for being database driven, there were a large number of nuiances ranging from UI items, business rules, and calculations that just didn't fit into a database driven strategy. With this in mind, my initial strategy was to create version specific classes and reference them in version specific ASP.NET pages. Of course, this accomplished the initial requirement. However, whenever a new version needs to be implemented, I had to copy all of the ASP.NET pages and modify the references to the appropriate version specific class name. Refactoring provides a better alternative and here's how: