Assignment 1 : part 1 : complete