adding in most of the rest of the assignment for assignment 3