Initial version for assignment3