pattern flyweight
pattern proxy
pattern command
patter iterator