Refactoring a la ReSharper.  Marked as "sealed", as there are references to virtual properties in the constructor