Refactored factory classes
Added factories per type
Added validation to types
Added name validation