add flyweight, facade patterns in c#