refactor Room to be an QObject rather than QThread