diff --git a/lib/dtsc.cpp b/lib/dtsc.cpp
index d021c68d..aa82c9b5 100644
--- a/lib/dtsc.cpp
+++ b/lib/dtsc.cpp
@@ -54,15 +54,16 @@ bool DTSC::Stream::parsePacket(std::string & buffer){
       datapointertype = INVALID;
       if (buffers.front().isMember("data")){
         datapointer = &(buffers.front()["data"].strVal);
-        if (buffers.front().isMember("datatype")){
-          std::string tmp = buffers.front()["datatype"].asString();
-          if (tmp == "video"){datapointertype = VIDEO;}
-          if (tmp == "audio"){datapointertype = AUDIO;}
-          if (tmp == "meta"){datapointertype = META;}
-        }
       }else{
         datapointer = 0;
       }
+      if (buffers.front().isMember("datatype")){
+        std::string tmp = buffers.front()["datatype"].asString();
+        if (tmp == "video"){datapointertype = VIDEO;}
+        if (tmp == "audio"){datapointertype = AUDIO;}
+        if (tmp == "meta"){datapointertype = META;}
+        if (tmp == "pause_marker"){datapointertype = PAUSEMARK;}
+      }
       buffer.erase(0, len+8);
       while (buffers.size() > buffercount){buffers.pop_back();}
       advanceRings();
@@ -295,7 +296,11 @@ void DTSC::File::seekNext(){
       currframe++;
       currtime = jsonbuffer["time"].asInt();
       #if DEBUG >= 4
-      std::cerr << "Found a new frame " << currframe << " @ " << pos << "b/" << currtime << "s" << std::endl;
+      if (frames[currframe] != pos){
+        std::cerr << "Found a new frame " << currframe << " @ " << pos << "b/" << currtime << "ms" << std::endl;
+      }else{
+        std::cerr << "Passing frame " << currframe << " @ " << pos << "b/" << currtime << "ms" << std::endl;
+      }
       #endif
       frames[currframe] = pos;
       msframes[currframe] = currtime;
@@ -329,6 +334,7 @@ bool DTSC::File::seek_frame(int frameno){
         seekNext();
         if (jsonbuffer.isNull()){return false;}
       }
+      seek_frame(frameno);
       return true;
     }
   }
diff --git a/lib/dtsc.h b/lib/dtsc.h
index ff591227..c4c578ac 100644
--- a/lib/dtsc.h
+++ b/lib/dtsc.h
@@ -56,6 +56,7 @@ namespace DTSC{
     AUDIO, ///< Stream Audio data
     VIDEO, ///< Stream Video data
     META, ///< Stream Metadata
+    PAUSEMARK, ///< Pause marker
     INVALID ///< Anything else or no data available.
   };
 
diff --git a/lib/json.cpp b/lib/json.cpp
index f5420d01..6a783bc4 100644
--- a/lib/json.cpp
+++ b/lib/json.cpp
@@ -406,7 +406,7 @@ std::string & JSON::Value::toNetPacked(){
     std::string packed = toPacked();
     strVal.resize(packed.size() + 8);
     //insert proper header for this type of data
-    if (isMember("data")){
+    if (isMember("datatype")){
       memcpy((void*)strVal.c_str(), "DTPD", 4);
     }else{
       memcpy((void*)strVal.c_str(), "DTSC", 4);