Added classes and code provided to us. Add a few comment to help understand the code