assignment2, submit version