I don't think the :fail return value is being handled at any place, is it? Maybe I'm forgetting something, but if it isn't handled, just return