added locking strategy