better handle edge cases