most of the tests are now implemented