diff --git a/src/Model/Geometry/Profile.py b/src/Model/Geometry/Profile.py
index 2da9457178c5e87f0ef228a45bf62df1c1a0b35a..71fc6d6b407a6b612070d2fdfd889fa233564496 100644
--- a/src/Model/Geometry/Profile.py
+++ b/src/Model/Geometry/Profile.py
@@ -1,5 +1,7 @@
 # -*- coding: utf-8 -*-
 
+from Model.Except import NotImplementedMethodeError
+
 class Profile(object):
     def __init__(self, num: int = 0,
                  kp:float = 0.0, name:str = "",
@@ -102,3 +104,7 @@ class Profile(object):
         """
         return [point for point in self._points
                 if point.point_is_named()]
+
+    # Abstract method, must be implemented for in non abstract class
+    def get_station(self):
+        raise NotImplementedMethodeError(self, self.get_station)
diff --git a/src/Model/Geometry/ProfileXYZ.py b/src/Model/Geometry/ProfileXYZ.py
index 5485d63e8f75e1504cb87c196e31cf753ca50553..f172a7c13b664c324b0069f28d940bdd7b0caf8e 100644
--- a/src/Model/Geometry/ProfileXYZ.py
+++ b/src/Model/Geometry/ProfileXYZ.py
@@ -179,6 +179,26 @@ class ProfileXYZ(Profile):
         """
         return [x for x in lst if not np.isnan(x)]
 
+    def _first_point_not_nan(self):
+        first_point = self._points[0]
+
+        for point in self._points:
+            if not point.is_nan():
+                first_point = point
+                break
+
+        return first_point
+
+    def _last_point_not_nan(self):
+        last_point = self._points[-1]
+
+        for point in self._points[::-1]:
+            if not point.is_nan():
+                last_point = point
+                break
+
+        return last_point
+
     def get_station(self) -> np.ndarray:
         """Projection of the points of the profile on a plane.
 
@@ -249,23 +269,3 @@ class ProfileXYZ(Profile):
                 constant = ret[index_profile_z_min]
 
             return (ret - constant)
-
-    def _first_point_not_nan(self):
-        first_point = self._points[0]
-
-        for point in self._points:
-            if not point.is_nan():
-                first_point = point
-                break
-
-        return first_point
-
-    def _last_point_not_nan(self):
-        last_point = self._points[-1]
-
-        for point in self._points[::-1]:
-            if not point.is_nan():
-                last_point = point
-                break
-
-        return last_point