most locks outside for loops (including READS)