Code Modified a bit
Code structure modified for Flyweight-2
merged code in to one file