locking design: code path and declarations