updates to support generic locking