Finished most of the functionality. Added some tests. Still need to add refactor and tests for everything.