first version of ProgramminAssignment2