diff --git a/include/tracker.h b/include/tracker.h
index 4f4bddc16de3875291efad3647f67c7866e1f6f4..50f2225a9cd6f4af4d83da761f640743707fc3c3 100644
--- a/include/tracker.h
+++ b/include/tracker.h
@@ -318,6 +318,7 @@ public:
     // gibt -1 zurueck, wenn frame oder naechster frame nicht existiert
     // entfernung ist absolut
     double distanceToNextFrame(int frame) const;
+    void syncTrackPersonMarkerID(TrackPoint &tp);
 };
 
 //mHeightCount wird nicht e3xportiert und auch nicht wieder eingelesen -> nach import auf 0 obwohl auf height ein wert steht, daher immer mheight auf -1 testen!!!
@@ -489,6 +490,7 @@ public:
 
     void purge(int frame);
 
+
 private:
     bool tryMergeTrajectories(const TrackPoint& v, size_t i, int frame);
 
@@ -499,4 +501,6 @@ private:
     void preCalculateImagePyramids(int level);
 };
 
+
+
 #endif
diff --git a/src/tracker.cpp b/src/tracker.cpp
index b9a45baaf7bb7982e63ec50b6242a49107b16b7c..46d6b7119d210ea7ea80139eb58719956fbeef1b 100644
--- a/src/tracker.cpp
+++ b/src/tracker.cpp
@@ -464,8 +464,9 @@ bool TrackPerson::insertAtFrame(int frame, const TrackPoint &p, int persNr, bool
                 for (i=1; i<(anz-1); ++i) // anz ist einer zu viel; zudem nur boie anz-1 , da sonst eh nur mit 1 multipliziert wuerde
                     (*this)[frame-mFirstFrame+i].setQual((i*trackPointAt(frame+i).qual())/anz);
             }
-
+            syncTrackPersonMarkerID(tp); // Funktion sucht, wie markerID von TrackPoint ist und macht Dinge abhängig davon und vom vorherigen TrackPoint
             replace(frame-mFirstFrame, tp);
+
             if (tp.qual() > 100) // manual add // after inserting, because p ist const
                 (*this)[frame-mFirstFrame].setQual(100); // so moving of a point is possible
             //debout << "Warning: frame exists already in trajectory!" << endl;
@@ -1075,7 +1076,11 @@ bool Tracker::addPoint(TrackPoint &p, int frame, QSet<int> onlyVisible, int *per
 
         if (pers != NULL)
             *pers = iNearest;
+
+        syncTrackPersonMarkerID(p);
+
         (*this)[iNearest].setNewReco(true);
+
     }
 
     //--i;
@@ -2075,17 +2080,17 @@ void Tracker::purge(int frame)
 // Brief: Synchronize TrackPoint.mMarkerID with TrackPerson.mMarkerID
 // set PersonMarkerID from TrackPointMarkerID if MarkerID == -1 and check if not other "real ID" was detected - trigger warning otherwise
 // Zu entscheiden: nutzung als funktion mit input+output oder als aufruf mit (*this)[i]
-// wie setTrackPersonHeight() ????
-void Tracker::syncTrackPersonMarkerID(QList<TrackPoint> &pL) // usage of &pL für PointList oder &p für Point ???
+void TrackPerson::syncTrackPersonMarkerID(TrackPoint &tp) // usage of &pL für PointList oder &p für Point ???
 {
-    for (int i = 0; i < size(); ++i) // ueber TrackPerson
+    int tpMarkerID = tp.markerID(); //MarkerID of currently handled trackpoint
+
+    if (tpMarkerID != -1)
     {
-        if (TrackPoint.mMarkerID[i]!=-1) // first time a Person is found but marker is not detected
+        if (mMarkerID == -1) // first time a Person is found
         {
-            TrackPerson.mMarkerID = TrackPoint.mMarkerID;
+            mMarkerID = tpMarkerID; // set TrackPerson MarkerID equal to TrackPoint MarkerID  //pL[i].markerID();
         }
-        // else if (TrackPerson.mMarkerID == TrackPoint.mMarkerID){// do nothin all is fine}
-        else if (TrackPerson.mMarkerID != TrackPoint.mMarkerID)
+        else if (mMarkerID != tpMarkerID)
         {
             cout << "ERROR: Two MarkerIDs were found for one trajectory." << endl;
         }