#2 - added all models and abstract factory class.