This is the updated version of Assignment 2