1st commit of assignment 2. Code completed. Code comments not fully added yet.