Clone of Assignment 2.