added lots of tests