this lib convention doesn't use Error