Closes #13 with a high number of unit tests, still missing one or two classes