only makevalid when you need to, preserves area calculation