diff --git a/tests/manual/trk/runner.cpp b/tests/manual/trk/runner.cpp
index 1ed357b5df085e1d48fefc91f920e6f0c56b4690..cd0df3010d13650d70f2a8df3e2ad1e95772a60f 100755
--- a/tests/manual/trk/runner.cpp
+++ b/tests/manual/trk/runner.cpp
@@ -999,7 +999,6 @@ void Adapter::handleTrkError(const QString &msg)
 
 void Adapter::handleTrkResult(const TrkResult &result)
 {
-    logMessage("HANDLING RESULT: " + result.data);
     if (result.isDebugOutput) {
         sendTrkAck(result.token);
         logMessage(QLatin1String("APPLICATION OUTPUT: ") +
diff --git a/tests/manual/trk/trkdevicex.cpp b/tests/manual/trk/trkdevicex.cpp
index d9abfdf1dfb80c3eff065aaab1131f206754a997..12f4f08481d5ab22b6a9c8a5ec0e202768bf45f8 100644
--- a/tests/manual/trk/trkdevicex.cpp
+++ b/tests/manual/trk/trkdevicex.cpp
@@ -257,8 +257,18 @@ void TrkWriteQueue::queueTrkInitialPing()
     trkWriteQueue.append(TrkMessage(0, 0));
 }
 
-struct TrkDevicePrivate {
+
+///////////////////////////////////////////////////////////////////////
+//
+// TrkDevicePrivate
+//
+///////////////////////////////////////////////////////////////////////
+
+struct TrkDevicePrivate
+{
     TrkDevicePrivate();
+
+    TrkWriteQueue queue;
 #ifdef Q_OS_WIN
     HANDLE hdevice;
 #else
@@ -298,11 +308,13 @@ TrkDevicePrivate::TrkDevicePrivate() :
 
 TrkDevice::TrkDevice(QObject *parent) :
     QObject(parent),
-    d(new TrkDevicePrivate),
-    qd(new TrkWriteQueue)
+    d(new TrkDevicePrivate)
+{}
+
+TrkDevice::~TrkDevice()
 {
-    connect(this, SIGNAL(messageReceived(trk::TrkResult)),
-        this, SLOT(slotHandleResult(trk::TrkResult)));
+    close();
+    delete d;
 }
 
 bool TrkDevice::open(const QString &port, QString *errorMessage)
@@ -355,14 +367,6 @@ bool TrkDevice::open(const QString &port, QString *errorMessage)
 #endif
 }
 
-
-TrkDevice::~TrkDevice()
-{
-    close();
-    delete d;
-    delete qd;
-}
-
 void TrkDevice::close()
 {
     if (!isOpen())
@@ -493,6 +497,7 @@ void TrkDevice::tryTrkRead()
         //if (verbose())
         //    logMessage("Read TrkResult " + r.data.toHex());
         qDebug() << "RECEIVE DATA: " << r.data.toHex();
+        d->queue.slotHandleResult(r);
         emit messageReceived(r);
         if (!rawData.isEmpty())
             emit rawDataReceived(rawData);
@@ -515,12 +520,12 @@ void TrkDevice::emitError(const QString &s)
 void TrkDevice::sendTrkMessage(byte code, Callback callback,
      const QByteArray &data, const QVariant &cookie, bool invokeOnNAK)
 {
-    qd->queueTrkMessage(code, callback, data, cookie, invokeOnNAK);
+    d->queue.queueTrkMessage(code, callback, data, cookie, invokeOnNAK);
 }
 
 void TrkDevice::sendTrkInitialPing()
 {
-    qd->queueTrkInitialPing();
+    d->queue.queueTrkInitialPing();
 }
 
 bool TrkDevice::sendTrkAck(byte token)
@@ -536,10 +541,10 @@ bool TrkDevice::sendTrkAck(byte token)
 void TrkDevice::tryTrkWrite()
 {
     TrkMessage message;
-    if (!qd->pendingMessage(&message))
+    if (!d->queue.pendingMessage(&message))
         return;
     const bool success = trkWriteRawMessage(message);
-    qd->notifyWriteResult(success);
+    d->queue.notifyWriteResult(success);
 }
 
 bool TrkDevice::trkWriteRawMessage(const TrkMessage &msg)
@@ -554,10 +559,5 @@ bool TrkDevice::trkWriteRawMessage(const TrkMessage &msg)
     return rc;
 }
 
-void TrkDevice::slotHandleResult(const TrkResult &result)
-{
-    qd->slotHandleResult(result);
-}
-
 } // namespace trk
 
diff --git a/tests/manual/trk/trkdevicex.h b/tests/manual/trk/trkdevicex.h
index 9d0e9da0dcc62c0cf9bc925f26f194c645d8e7fe..1873f458e7ce8db4ac4194fa1a0d85fa60a7444e 100644
--- a/tests/manual/trk/trkdevicex.h
+++ b/tests/manual/trk/trkdevicex.h
@@ -46,8 +46,6 @@ namespace trk {
 struct TrkResult;
 struct TrkMessage;
 struct TrkDevicePrivate;
-class TrkWriteQueue;
-struct TrkWriteQueueIODevicePrivate;
 
 /* TrkDevice: Implements a Windows COM or Linux device for
  * Trk communications. Provides synchronous write and asynchronous
@@ -116,15 +114,11 @@ public:
     // Send an Ack synchronously, bypassing the queue
     bool sendTrkAck(unsigned char token);
 
-private slots:
-    void slotHandleResult(const trk::TrkResult &);
-
 private:
     void tryTrkWrite();
     bool trkWriteRawMessage(const TrkMessage &msg);
 
     TrkDevicePrivate *d;
-    TrkWriteQueue *qd;
 };
 
 } // namespace trk