First version of assignment3