Composite, Iterator, Proxy, State, and Tempate Method (and some code fixing)