Assignement4 - completed