Implemented most of level 1.