Final version of the assignment