Overhaul: Split failed handling to separate module