properly defer unlock calls