changes singleton/composite/factoryMethod