don't define our own fail function