Joel, wouldn't this break encapsulation, since the base abstraction should not care about its implementations?
Thoughts? What are the purposes?