just putting synchronized() over is likely OK because the most of time is spent above.