add Factory pattern
iterator pattern 2
composition