diff --git a/README.md b/README.md
index a660d10052c572ba46d35746f7c008762b9ba5a7..edaad25dbe128aa0e0a75338471991814e679806 100644
--- a/README.md
+++ b/README.md
@@ -149,9 +149,3 @@ Or you can check for strict inclusion
 ```python
 Range('<-1;1>') in Range('<-2;2>')
 ```
-
-## TimeProviders
-
-**EXPERIMENTAL**
-
-Can be imported from _sai.timeproviders_.
diff --git a/firanka/builders.py b/firanka/builders.py
index 769135294e861f11cf7f3911bc1ddc6e2669ad7e..ba49333f6561f20999b6a63d001d80848a25dd1e 100644
--- a/firanka/builders.py
+++ b/firanka/builders.py
@@ -5,6 +5,7 @@ import logging
 import copy
 from .series import Series, DiscreteSeries
 from .ranges import Range
+from sortedcontainers import SortedList
 
 """
 Update knowledge of current discrete series
@@ -43,11 +44,10 @@ class DiscreteSeriesBuilder(object):
         :return: a new DiscreteSeries instance
         """
 
-        new_data = []
-
+        new_data = SortedList()
         cp_new_data = copy.copy(self.new_data)
 
-        # Update
+        # Update - series.data is sorted, so no worries :)
         for k, v in self.series.data:
             if k in cp_new_data:
                 v = cp_new_data.pop(k)
@@ -55,6 +55,6 @@ class DiscreteSeriesBuilder(object):
 
         # Add those that remained
         for k,v in cp_new_data.items():
-            new_data.append((k,v))
+            new_data.add((k,v))
 
         return DiscreteSeries(new_data, self.domain)
diff --git a/firanka/timeproviders.py b/firanka/timeproviders.py
deleted file mode 100644
index 47dbd0cfe6507a6d0b5cb47e7dc66d2b5441516b..0000000000000000000000000000000000000000
--- a/firanka/timeproviders.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# coding=UTF-8
-from __future__ import print_function, absolute_import, division
-
-from .ranges import Range
-from .series import Series
-
-
-class BijectionMapping(object):
-    def __init__(self, user2float, float2user):
-        """
-        :param user2float: callable/1 => float, mapping from your time system to floats
-        :param float2user: callable/float => 1, mapping from float to your time systen
-        """
-        self.user2float = user2float
-        self.float2user = float2user
-
-    def to_float(self, user):
-        return self.user2float(user)
-
-    def to_user(self, flt):
-        return self.float2user(flt)
-
-
-class TimeProvidedSeries(Series):
-    """
-    If your time is something else than simple floats, this will help you out
-    """
-
-    def __init__(self, series, mapping, *args, **kwargs):
-        """
-        :param series: series to overlay
-        """
-        super(TimeProvidedSeries, self).__init__(series.domain, *args,
-                                                 **kwargs)
-        self.mapping = mapping
-        self.series = series
-
-    def _withmap(self, series):
-        return TimeProvidedSeries(series, self.mapping)
-
-    def __getitem__(self, item):
-        if isinstance(item, slice):
-            item = slice(
-                float('-inf') if slice.start is None else self.to_float(
-                    slice.start),
-                float('+inf') if slice.stop is None else self.to_float(
-                    slice.stop), )
-
-            return self._withmap(self.series[item])
-        elif isinstance(item, Range):
-            return self._withmap(self.series[item])
-        else:
-            return self.series[self.mapping.to_float(item)]
-
-    def _get_for(self, item):
-        return self.series[self.l2f(item)]
-
-    def join(self, series, fun):
-        return TimeProvidedSeries(self.series.join(series, fun), self.mapping)
diff --git a/tests/test_timeproviders.py b/tests/test_timeproviders.py
deleted file mode 100644
index 87bc595feb1fa122891fa837b6a5095613599536..0000000000000000000000000000000000000000
--- a/tests/test_timeproviders.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# coding=UTF-8
-from __future__ import print_function, absolute_import, division
-
-import unittest
-
-from firanka.series import DiscreteSeries
-from firanka.timeproviders import TimeProvidedSeries, BijectionMapping
-
-
-class TestTimeproviders(unittest.TestCase):
-    def test_base(self):
-        map = BijectionMapping(
-            lambda hhmm: hhmm[0] * 60 + hhmm[1],
-            lambda t: (t // 60, t % 60)
-        )
-
-        ser = DiscreteSeries([(0, 17), (60, 20), (120, 18)])
-        ts = TimeProvidedSeries(ser, map)
-
-        self.assertEqual(ts[(2, 0)], 18)