use synchronized calls