add more tests and coverage