edge cases fixed