Add chain of responsibility pattern
Add iterator pattern