this approach allows you to leverage your existing failure handling and avoid special cases