added base, subclasses and factory to project 1