diff --git a/firanka/series/exceptions.py b/firanka/series/exceptions.py
index 1144a1df43d7c6c1870b7e49e18250a3c0b8850e..f8d6a2885e2e3c142dfbb2b4aee946cdab471144 100644
--- a/firanka/series/exceptions.py
+++ b/firanka/series/exceptions.py
@@ -5,7 +5,9 @@ import logging
 
 
 class FirankaError(Exception):
-    pass
+    """
+    Base class for firanka's exceptions
+    """
 
 
 class NotInDomainError(FirankaError, ValueError):
diff --git a/firanka/series/range.py b/firanka/series/range.py
index dc1e4a1c110aa8d4f0db7fa3ffee4d97e1b71fb2..82efa3809d754e2db0de86c12453286dc5c8a9e7 100644
--- a/firanka/series/range.py
+++ b/firanka/series/range.py
@@ -53,11 +53,10 @@ class Range(object):
         :type x: index or a Range
         """
 
-        if isinstance(x, (Range, six.text_type)):
-            if isinstance(x, six.text_type):
-                x = Range(x)
-            print('does ', self, 'contain', x)
+        if isinstance(x, six.string_types):
+            x = Range(x)
 
+        if isinstance(x, Range):
             if x.start == self.start:
                 if x.left_inc ^ self.left_inc:
                     return False
diff --git a/firanka/series/series.py b/firanka/series/series.py
index c819859a162b033b987e1a1583b4d2bcac5b7cee..331827a41ecdfe10ce69b4ed141fd77fe3b2665c 100644
--- a/firanka/series/series.py
+++ b/firanka/series/series.py
@@ -63,13 +63,13 @@ class Series(object):
         if len(points) == 0:
             return DiscreteSeries([])
 
-        if domain is None:
-            domain = Range(points[0], points[-1], True, True)
+        domain = domain or Range(min(points), max(points), True, True)
 
         if domain not in self.domain:
             raise NotInDomainError('points not inside this series!')
 
         data = [(i, self[i]) for i in points]
+        data.sort()
         return DiscreteSeries(data, domain)
 
     def join(self, series, fun):
diff --git a/tests/test_series/test_range.py b/tests/test_series/test_range.py
index 0a3c5b1d79270b9920ec2473d120479b3cf03c48..6a6652f7d5de0842d05ef207bded3b57c393f378 100644
--- a/tests/test_series/test_range.py
+++ b/tests/test_series/test_range.py
@@ -49,4 +49,5 @@ class TestRange(unittest.TestCase):
         self.assertFalse(-20 in Range('(-10;-1>'))
         self.assertFalse(1 in Range('(-10;-1>'))
 
-        self.assertTrue(Range('<-5;5>') in Range('<-10;10>'))
\ No newline at end of file
+        self.assertTrue(Range('<-5;5>') in Range('<-10;10>'))
+        self.assertTrue('(-1;6)' in Range(-10.0, 10.0, True, False))
diff --git a/tests/test_series/test_series.py b/tests/test_series/test_series.py
index 7036336a8e0f04e340e92efee39a978e55569479..98e95c08527303ce869177b2ed063c4125d8acc4 100644
--- a/tests/test_series/test_series.py
+++ b/tests/test_series/test_series.py
@@ -2,7 +2,7 @@
 from __future__ import print_function, absolute_import, division
 import six
 import unittest
-from firanka.series import DiscreteSeries, FunctionBasedSeries, Range, ModuloSeries
+from firanka.series import DiscreteSeries, FunctionBasedSeries, Range, ModuloSeries, NotInDomainError
 
 
 class TestDiscreteSeries(unittest.TestCase):
@@ -14,15 +14,15 @@ class TestDiscreteSeries(unittest.TestCase):
         self.assertEqual(s[0.5], 0)
         self.assertEqual(s[1], 1)
 
-        self.assertRaises(ValueError, lambda: s[-1])
-        self.assertRaises(ValueError, lambda: s[2.5])
+        self.assertRaises(NotInDomainError, lambda: s[-1])
+        self.assertRaises(NotInDomainError, lambda: s[2.5])
 
         s = DiscreteSeries([[0,0], [1,1], [2,2]], domain=Range(0,3,True,True))
         self.assertEqual(s[0], 0)
         self.assertEqual(s[0.5], 0)
         self.assertEqual(s[1], 1)
 
-        self.assertRaises(ValueError, lambda: s[-1])
+        self.assertRaises(NotInDomainError, lambda: s[-1])
         self.assertEqual(s[2.5], 2)
 
     def test_translation(self):
@@ -39,8 +39,8 @@ class TestDiscreteSeries(unittest.TestCase):
 
         self.assertEqual(sp[0.5], 0)
         self.assertEqual(sp[1.5], 1)
-        self.assertRaises(ValueError, lambda: sp[0])
-        self.assertRaises(ValueError, lambda: sp[2])
+        self.assertRaises(NotInDomainError, lambda: sp[0])
+        self.assertRaises(NotInDomainError, lambda: sp[2])
         self.assertEqual(sp.domain.start, 0.5)
         self.assertEqual(sp.domain.stop, 1.5)
 
@@ -97,8 +97,8 @@ class TestFunctionBasedSeries(unittest.TestCase):
 
         self.assertEqual(sp[0.5], 0.5)
         self.assertEqual(sp[1.5], 1.5)
-        self.assertRaises(ValueError, lambda: sp[0])
-        self.assertRaises(ValueError, lambda: sp[2])
+        self.assertRaises(NotInDomainError, lambda: sp[0])
+        self.assertRaises(NotInDomainError, lambda: sp[2])
         self.assertEqual(sp.domain.start, 0.5)
         self.assertEqual(sp.domain.stop, 1.5)