adding final version of assignment 3