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

... ) method