diff --git a/firanka/series/__init__.py b/firanka/series/__init__.py
index f41d2141fd379692412bbecadbaac4204e429fa4..3b3bbcdf59397899bf54eae56cc58f275b2abf5b 100644
--- a/firanka/series/__init__.py
+++ b/firanka/series/__init__.py
@@ -3,7 +3,11 @@ from __future__ import print_function, absolute_import, division
 import six
 import logging
 
-logger = logging.getLogger(__name__)
-
 from .exceptions import OutOfRangeError, EmptyDomainError
+from .range import Range
 
+__all__ = [
+    'OutOfRangeError',
+    'EmptyDomainError',
+    'Range'
+]
diff --git a/firanka/series/range.py b/firanka/series/range.py
index 81a01239a2747ba33e3ebaf4731f9f1efc23aefe..bb921373f832506e77c7f8ecd2c24cf6ec85d0fa 100644
--- a/firanka/series/range.py
+++ b/firanka/series/range.py
@@ -5,6 +5,7 @@ import logging
 import re
 from satella.coding import for_argument
 import functools
+import math
 
 logger = logging.getLogger(__name__)
 
@@ -25,8 +26,8 @@ class Range(object):
     def __init__(self, *args):
         if len(args) == 1:
             rs, = args
-            assert rs.startswith('<') or rs.startswith('(')
-            assert rs.endswith('>') or rs.endswith(')')
+            assert rs[0] in '<('
+            assert rs[-1] in '>)'
 
             lend_inclusive = rs[0] == '<'
             rend_inclusive = rs[-1] == '>'
@@ -41,6 +42,11 @@ class Range(object):
         else:
             start, stop, lend_inclusive, rend_inclusive = args
 
+        if lend_inclusive and math.isinf(start):
+            raise ValueError('Greater or equal with infinity!')
+        if rend_inclusive and math.isinf(stop):
+            raise ValueError('Greater or equal with infinity!')
+
         self.start = start
         self.stop = stop
         self.lend_inclusive = lend_inclusive
diff --git a/tests/test_series/test_range.py b/tests/test_series/test_range.py
index 8398c3c265036003108acdd3771b07ba118a5ca8..8acf5cd1e9db7fd4cd05533ea8898682c7c87c10 100644
--- a/tests/test_series/test_range.py
+++ b/tests/test_series/test_range.py
@@ -13,4 +13,13 @@ class TestRange(unittest.TestCase):
 
 
     def test_str(self):
-        self.assertEqual(str(Range(-1, 1, True, True)), '<-1;1>')
\ No newline at end of file
+        self.assertEqual(str(Range(-1, 1, True, True)), '<-1;1>')
+
+    def test_contains(self):
+        self.assertFalse(-1 in Range('<-10;-1)'))
+        self.assertTrue(-10 in Range('<-10;-1)'))
+        self.assertFalse(-10 in Range('(-10;-1>'))
+        self.assertTrue(-1 in Range('(-10;-1>'))
+        self.assertTrue(-5 in Range('(-10;-1>'))
+        self.assertFalse(-20 in Range('(-10;-1>'))
+        self.assertFalse(1 in Range('(-10;-1>'))