Improved option validation on constructor initialization
Changed to ModelFactory