add flyweight-pattern