handle more edge cases