Added IValidatableFactory class.  Refactored factory stuff a bit