consistent unlock behavior