Added some tests
Moved classes into their own compilation unit
Added equality operators