optimistic locking implemented