solving edge cases