single thread by default