Add many tests, some oddly failing
Write equality function, docs, tests