preference multi thread
singleton change to adapt multithread