MAJOR CLEANUP AND SPEC REVIEW

I went through the spec line by line and made sure we were following
what he wanted in the assignment.

There are TODOs (to do) and FIXMEs (fix me).

This is what needs to be done and where it needs to be done.

Please update to this version, no matter what your old code was.