added more tests, all pass