Add Iterator and Command pattern