add lock for smp safety