added a lot more tests