throw for sensible exceptions