WIP: wrote out the tests and working on passing them