more edge cases. more tests