Made the objects more accessible and cleaned up code.
Created lots of tests!