added tests
added lots of testing