--- a/libupnpp/control/ohplaylist.hxx
+++ b/libupnpp/control/ohplaylist.hxx
@@ -21,6 +21,7 @@
 #include <memory>
 
 #include "service.hxx"
+#include "cdircontent.hxx"
 
 namespace UPnPClient {
 
@@ -43,6 +44,42 @@
     /** Test service type from discovery message */
     static bool isOHPlService(const std::string& st);
 
+    int play();
+    int pause();
+    int stop();
+    int next();
+    int previous();
+    int setRepeat(bool onoff);
+    int repeat(bool *on);
+    int setShuffle(bool onoff);
+    int shuffle(bool *on);
+    int seekSecondAbsolute(int value);
+    int seekSecondRelative(int value);
+    int seekId(int value);
+    int seekIndex(int value);
+    enum TPState {TPS_Unknown, TPS_Buffering, TPS_Paused, TPS_Playing,
+                  TPS_Stopped};
+    int transportState(TPState *tps);
+    int id(int *value);
+    int read(int id, std::string* uri, UPnPDirObject *dirent);
+
+    struct TrackListEntry {
+        int id;
+        std::string url;
+        UPnPDirObject dirent;
+        void clear() {id = -1; url.clear(); dirent.clear();}
+    };
+    int readList(const std::vector<int>& ids, 
+                 std::vector<TrackListEntry>* entsp);
+
+    int insert(int afterid, const string& uri, const string& didl, int *nid);
+    int deleteId(int id);
+    int deleteAll();
+    int tracksMax(int *);
+    int idArray(std::vector<int> *ids, int *tokp);
+    int idArrayChanged(int token, bool *changed);
+    int protocolInfo(std::string *proto);
+
 protected:
     /* My service type string */
     static const std::string SType;