added lots of test