Assignment 3 [not all finished]