Doesn't this need a rethrow in the else case?