handling edge cases