many edge cases