hopefully improved exception handling and @allows_extra_values