Implement FactoryMethod's and added diagrams