diff --git a/firanka/series/range.py b/firanka/series/range.py
index ffc085940b19dde12a3f95dc48bcbd186b1dd1dc..3779a143742c996ef6d567f5e8f1702d8e33450a 100644
--- a/firanka/series/range.py
+++ b/firanka/series/range.py
@@ -24,21 +24,26 @@ class Range(object):
     """
     def __init__(self, *args):
         if len(args) == 1:
-            rs, = args
 
-            if (rs[0] not in '<(') or (rs[-1] not in '>)'):
-                raise ValueError('Must start with < or ( and end with ) or >')
-
-            lend_inclusive = rs[0] == '<'
-            rend_inclusive = rs[-1] == '>'
-
-            rs = rs[1:-1]
-            start, stop = map(float, rs.split(';'))
-        elif isinstance(args[0], Range):
-            start = args[0].range
-            stop = args[0].stop
-            lend_inclusive = args[0].lend_inclusive
-            rend_inclusive = args[0].rend_inclusive
+            if isinstance(args[0], type(self)):
+                start = args[0].start
+                stop = args[0].stop
+                lend_inclusive = args[0].lend_inclusive
+                rend_inclusive = args[0].rend_inclusive
+            else:
+                rs, = args
+
+                if rs[0] not in '<(': raise ValueError('Must start with ( or <')
+                if rs[-1] not in '>)': raise ValueError('Must end with ) or >')
+                if ';' not in rs: raise ValueError('Separator ; required')
+
+                lend_inclusive = rs[0] == '<'
+                rend_inclusive = rs[-1] == '>'
+
+                rs = rs[1:-1]
+                start, stop = rs.split(';')
+                start = float(start)
+                stop = float(stop)
         else:
             start, stop, lend_inclusive, rend_inclusive = args
 
@@ -69,7 +74,6 @@ class Range(object):
         return self.stop - self.start
 
     def __repr__(self):
-        return str(self)
         return 'Range(%s, %s, %s, %s)' % (repr(self.start), repr(self.stop), repr(self.lend_inclusive), repr(self.rend_inclusive))
 
     def __bool__(self):
@@ -86,7 +90,6 @@ class Range(object):
 
     @pre_range
     def intersection(self, y):
-        print(str(self), str(y))
         if self.start > y.start:
             return y.intersection(self)
 
diff --git a/setup.py b/setup.py
index ca77cdecdba9f030770e6248a99bce40a8170bc5..42ca61aceac6b30a55e1a3d44ecb83db4d15e23d 100644
--- a/setup.py
+++ b/setup.py
@@ -4,6 +4,7 @@ from setuptools import setup, find_packages
 from firanka import __version__
 
 setup(
+    name='firanka',
     version=__version__,
     packages=find_packages(exclude=['tests.*', 'tests']),
     tests_require=["nose", 'coverage>=4.0,<4.4'],
diff --git a/tests/test_series/test_range.py b/tests/test_series/test_range.py
index f0eca7083180a8acd4206dcb83ae47851339edc0..5fa18b72030becac9cb876d3fa3dfbf8af8543d2 100644
--- a/tests/test_series/test_range.py
+++ b/tests/test_series/test_range.py
@@ -5,11 +5,17 @@ import unittest
 from firanka.series import Range
 
 
+
 class TestRange(unittest.TestCase):
+
+    def do_intersect(self, a, b, val):
+        self.assertEqual(bool(Range(a).intersection(b)), val)
+        self.assertEqual(bool(Range(b).intersection(a)), val)
+
     def test_intersection(self):
-        self.assertFalse(Range(-10, -1, True, True).intersection('<2;3>'))
-        self.assertFalse(Range(-10, -1, True, False).intersection('(-1;3>'))
-        self.assertFalse(Range('<-10;-1)').intersection('<-1;1>'))
+        self.do_intersect(Range(-10, -1, True, True), '<2;3>', False)
+        self.do_intersect(Range(-10, -1, True, False), '(-1;3>', False)
+        self.do_intersect('<-10;-1)', '<-1;1>', False)
 
     def test_str(self):
         self.assertEqual(str(Range(-1, 1, True, True)), '<-1;1>')