one-thread run