add Flyweight Design Pattern