Yes, this sounds like what I want but I can not get it to work how I want (-: Monad Reader 15 is where this is discussed. Apparently MonadFailure has been replaced with Failure.