diff --git a/requirements.txt b/requirements.txt
index e6eac089238c5908bb07e3e45a306d9ec024d03d..bac8f3919f75435dd16b8769f761ebf7b5d0c6ea 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,7 +1,7 @@
 pandas~=1.1.5
 setuptools~=57.0.0
 numpy~=1.19.5
-numba~=0.53.1
+numba>0.53.1
 scipy~=1.5.4
 hmmlearn~=0.2.6
 scikit-learn~=1.0.1
diff --git a/skais/ais/ais_trajectory.py b/skais/ais/ais_trajectory.py
index 709440b93d837c1bf820a46c5d694744fa6fec55..f8364722878ef74364cb05f363da1ed002425b83 100644
--- a/skais/ais/ais_trajectory.py
+++ b/skais/ais/ais_trajectory.py
@@ -214,3 +214,12 @@ class AISTrajectory(AISPoints):
             return self
         else:
             return AISTrajectory(new_df, mmsi=self.mmsi)
+
+    def get_time_per_label_shift(self, label_column='label'):
+        current_label = -1
+        result = []
+        for index, row in self.df.iterrows():
+            if current_label != row[label_column]:
+                current_label = row[label_column]
+                result.append((row['ts_sec'], current_label))
+        return result
\ No newline at end of file
diff --git a/skais/tests/ais/test_ais_trajectory.py b/skais/tests/ais/test_ais_trajectory.py
index d4bb0d629c31fccbae8833eef65d4b19ab0db58d..bea4d8843011eaabc1ae0b81bf1dc023b3e62706 100644
--- a/skais/tests/ais/test_ais_trajectory.py
+++ b/skais/tests/ais/test_ais_trajectory.py
@@ -333,4 +333,49 @@ class TestAISTrajectory(unittest.TestCase):
 
         expected = np.array([2, 2, 2, 2, 2])
 
-        np.testing.assert_equal(result, expected)
\ No newline at end of file
+        np.testing.assert_equal(result, expected)
+
+    def test_get_time_per_label_shift_single_label(self):
+        trajectory = AISTrajectory(
+            pd.DataFrame(
+                {
+                    "label": [1 for _ in range(0, 101, 10)],
+                    "ts_sec": [i for i in range(0, 6001, 600)]
+                }
+            )
+        )
+
+        result = trajectory.get_time_per_label_shift()
+        expected = [(0, 1)]
+
+        self.assertListEqual(result, expected)
+
+    def test_get_time_per_label_shift_label_switch_1(self):
+        trajectory = AISTrajectory(
+            pd.DataFrame(
+                {
+                    "label": [1 for _ in range(11)] + [2 for _ in range(10)],
+                    "ts_sec": [i for i in range(0, 12001, 600)]
+                }
+            )
+        )
+
+        result = trajectory.get_time_per_label_shift()
+        expected = [(0, 1), (6600, 2)]
+
+        self.assertListEqual(result, expected)
+
+    def test_get_time_per_label_shift_label_switch_2(self):
+        trajectory = AISTrajectory(
+            pd.DataFrame(
+                {
+                    "label": [1 for _ in range(11)] + [2 for _ in range(10)]+ [1 for _ in range(10)],
+                    "ts_sec": [i for i in range(0, 18001, 600)]
+                }
+            )
+        )
+
+        result = trajectory.get_time_per_label_shift()
+        expected = [(0, 1), (6600, 2), (12600, 1)]
+
+        self.assertListEqual(result, expected)
\ No newline at end of file
diff --git a/skais/utils/geography.py b/skais/utils/geography.py
index a45ec845259a0d05409fae5174b2396ad8145182..79b110194c7da6bd332b310c1e46a70beb93a2dd 100644
--- a/skais/utils/geography.py
+++ b/skais/utils/geography.py
@@ -1,4 +1,3 @@
-from sklearn.metrics.pairwise import haversine_distances
 import numpy as np
 from numba import jit