Restructured register/recover