rename todo to rationales, make lock/unlock testable