fully working assignment.  Next commit will have better printing format