First version of assignment 2