Added a whole bunch of tests and added some TODO notes