global lock required!