handle edge cases