more granular locking