not using QThread