Add factory method to model abstract classes. Also - separate fill( data ) method