Rework OnFail calling pattern