diff --git a/swiftclient/client.py b/swiftclient/client.py
index 5ebbcf2b..2cb54a1b 100644
--- a/swiftclient/client.py
+++ b/swiftclient/client.py
@@ -28,6 +28,7 @@ from requests.exceptions import RequestException, SSLError
 from six.moves.urllib.parse import quote as _quote
 from six.moves.urllib.parse import urlparse, urlunparse
 from time import sleep, time
+import six
 
 from swiftclient.exceptions import ClientException, InvalidHeadersException
 from swiftclient.utils import LengthWrapper
@@ -97,7 +98,7 @@ def quote(value, safe='/'):
     Patched version of urllib.quote that encodes utf8 strings before quoting
     """
     value = encode_utf8(value)
-    if isinstance(value, str):
+    if isinstance(value, bytes):
         return _quote(value, safe)
     else:
         return value
@@ -117,7 +118,7 @@ def validate_headers(headers):
 
 
 def encode_utf8(value):
-    if isinstance(value, unicode):
+    if isinstance(value, six.text_type):
         value = value.encode('utf8')
     return value
 
diff --git a/swiftclient/utils.py b/swiftclient/utils.py
index 5095f9dc..058181dc 100644
--- a/swiftclient/utils.py
+++ b/swiftclient/utils.py
@@ -14,6 +14,8 @@
 # limitations under the License.
 """Miscellaneous utility functions for use with Swift."""
 
+import six
+
 TRUE_VALUES = set(('true', '1', 'yes', 'on', 't', 'y'))
 
 
@@ -24,7 +26,7 @@ def config_true_value(value):
     This function come from swift.common.utils.config_true_value()
     """
     return value is True or \
-        (isinstance(value, basestring) and value.lower() in TRUE_VALUES)
+        (isinstance(value, six.string_types) and value.lower() in TRUE_VALUES)
 
 
 def prt_bytes(bytes, human_flag):
diff --git a/tests/test_swiftclient.py b/tests/test_swiftclient.py
index f9e20223..21fec10d 100644
--- a/tests/test_swiftclient.py
+++ b/tests/test_swiftclient.py
@@ -178,9 +178,9 @@ class TestHttpHelpers(MockHttpTest):
 
     def test_quote(self):
         value = 'standard string'
-        self.assertEqual('standard%20string', c.quote(value))
+        self.assertEqual(b'standard%20string', c.quote(value))
         value = u'\u0075nicode string'
-        self.assertEqual('unicode%20string', c.quote(value))
+        self.assertEqual(b'unicode%20string', c.quote(value))
 
     def test_http_connection(self):
         url = 'http://www.test.com'
@@ -205,7 +205,10 @@ class TestHttpHelpers(MockHttpTest):
                           headers)
 
     def test_validate_headers_with_other_than_str(self):
-        for t in (None, 1, 1.0, 1L, u"A"):
+        values = [None, 1, 1.0, u"A"]
+        if six.PY2:
+            values.append(long(1))
+        for t in values:
             self.assertEqual(c.validate_headers({'key': t}),
                              None)
 
@@ -573,7 +576,7 @@ class TestPutObject(MockHttpTest):
         c.http_connection = self.fake_http_connection(200)
         args = ('http://www.test.com', 'asdf', 'asdf', 'asdf', 'asdf')
         value = c.put_object(*args)
-        self.assertTrue(isinstance(value, basestring))
+        self.assertTrue(isinstance(value, six.string_types))
 
     def test_unicode_ok(self):
         conn = c.http_connection(u'http://www.test.com/')
@@ -590,7 +593,7 @@ class TestPutObject(MockHttpTest):
         conn[1].getresponse = resp.fake_response
         conn[1]._request = resp._fake_request
         value = c.put_object(*args, headers=headers, http_conn=conn)
-        self.assertTrue(isinstance(value, basestring))
+        self.assertTrue(isinstance(value, six.string_types))
         # Test for RFC-2616 encoded symbols
         self.assertTrue("a-b: .x:yz mn:fg:lp" in resp.buffer[0],
                         "[a-b: .x:yz mn:fg:lp] header is missing")
@@ -970,7 +973,7 @@ class TestLogging(MockHttpTest):
         c.http_connection = self.fake_http_connection(200)
         args = ('http://www.test.com', 'asdf', 'asdf', 'asdf', 'asdf')
         value = c.put_object(*args)
-        self.assertTrue(isinstance(value, basestring))
+        self.assertTrue(isinstance(value, six.string_types))
 
     def test_head_error(self):
         c.http_connection = self.fake_http_connection(500)