added many more tests