diff --git a/firanka/ranges.py b/firanka/ranges.py
index e9ce0012d251606ae5845a23f78df72520935884..8387735e98e59f706a0ab9bd056d09690823cf83 100644
--- a/firanka/ranges.py
+++ b/firanka/ranges.py
@@ -55,7 +55,7 @@ class Range(object):
     def __getargs(self, args):
         if len(args) == 1:
             rs, = args
-            if isinstance(rs, type(self)):
+            if isinstance(rs, Range):
                 args = self.__fromrange(rs)
             elif isinstance(rs, slice):
                 args = self.__fromslice(rs)
diff --git a/tests/test_range.py b/tests/test_range.py
index 3f19e904bf021e115dcd57447d27a24c4026554f..fa286dcaffff2d0596fcb20b5f0772650ab7015e 100644
--- a/tests/test_range.py
+++ b/tests/test_range.py
@@ -49,6 +49,9 @@ class TestRange(unittest.TestCase):
         self.assertEqual(Range(1, 2, True, False), Range('<1;2)'))
         self.assertEqual(Range(1, 2, True, False), '<1;2)')
 
+        r = Range(1, 2, True, False)
+        self.assertEqual(r, Range(r))
+
     def test_contains(self):
         self.assertFalse(-1 in Range('<-10;-1)'))
         self.assertTrue(-10 in Range('<-10;-1)'))
@@ -57,6 +60,8 @@ class TestRange(unittest.TestCase):
         self.assertTrue(-5 in Range('(-10;-1>'))
         self.assertFalse(-20 in Range('(-10;-1>'))
         self.assertFalse(1 in Range('(-10;-1>'))
+        self.assertFalse('<-10;-1>' in Range('(-10;-1)'))
+        self.assertFalse('<-10;-1)' in Range('(-10;-1>'))
 
         self.assertTrue(Range('<-5;5>') in Range('<-10;10>'))
         self.assertTrue('(-1;6)' in Range(-10.0, 10.0, True, False))