supports exceptions.