Implements Assignment 4 Part 2-5

until