nm this is only called from a synchronized method