--- a/src/upmpd.cxx
+++ b/src/upmpd.cxx
@@ -62,32 +62,29 @@
              MPDCli *mpdcli, Options opts)
     : UpnpDevice(deviceid, files), m_mpdcli(mpdcli), m_mpds(0),
       m_options(opts.options),
-      m_mcachefn(opts.cachefn)
+      m_mcachefn(opts.cachefn),
+      m_rdctl(0), m_avt(0), m_ohpr(0), m_ohpl(0), m_ohrcv(0)
 {
     bool avtnoev = (m_options & upmpdNoAV) != 0; 
     // Note: the order is significant here as it will be used when
     // calling the getStatus() methods, and we want AVTransport to
     // update the mpd status for OHInfo
-    UpMpdRenderCtl *rdctl = new UpMpdRenderCtl(this, avtnoev);
-    m_services.push_back(rdctl);
-    UpMpdAVTransport* avt = new UpMpdAVTransport(this, avtnoev);
-    m_services.push_back(avt);
+    m_rdctl = new UpMpdRenderCtl(this, avtnoev);
+    m_services.push_back(m_rdctl);
+    m_avt = new UpMpdAVTransport(this, avtnoev);
+    m_services.push_back(m_avt);
     m_services.push_back(new UpMpdConMan(this));
-    bool ohReceiver = (m_options & upmpdOhReceiver) != 0; 
+    bool haveReceiver = (m_options & upmpdOhReceiver) != 0; 
     if (m_options & upmpdDoOH) {
-        OHProduct *ohpr = new OHProduct(this, friendlyname, ohReceiver);
-        m_services.push_back(ohpr);
+        m_ohpr = new OHProduct(this, friendlyname, haveReceiver);
+        m_services.push_back(m_ohpr);
         m_services.push_back(new OHInfo(this));
         m_services.push_back(new OHTime(this));
-        m_services.push_back(new OHVolume(this, rdctl));
-        OHPlaylist *ohpl = new OHPlaylist(this, rdctl, opts.ohmetasleep);
-        m_services.push_back(ohpl);
-        if (avt)
-            avt->setOHP(ohpl);
-        if (ohReceiver) {
+        m_services.push_back(new OHVolume(this));
+        m_ohpl = new OHPlaylist(this, opts.ohmetasleep);
+        m_services.push_back(m_ohpl);
+        if (haveReceiver) {
             struct OHReceiverParams parms;
-            parms.pl = ohpl;
-            parms.pr = ohpr;
             if (opts.schttpport)
                 parms.httpport = opts.schttpport;
             if (!opts.scplaymethod.empty()) {
@@ -97,7 +94,8 @@
                     parms.pm = OHReceiverParams::OHRP_MPD;
                 }
             }
-            m_services.push_back(new OHReceiver(this, parms));
+            m_ohrcv = new OHReceiver(this, parms);
+            m_services.push_back(m_ohrcv);
         }
     }
 }