diff --git a/predictionio/__init__.py b/predictionio/__init__.py
index 8863f65..b76338e 100644
--- a/predictionio/__init__.py
+++ b/predictionio/__init__.py
@@ -14,7 +14,10 @@
 
 # import packages
 import re
-import httplib
+try:
+    import httplib
+except ImportError:
+    from http import client as httplib
 import json
 import urllib
 
diff --git a/predictionio/connection.py b/predictionio/connection.py
index 3efd9ab..0ce02dc 100644
--- a/predictionio/connection.py
+++ b/predictionio/connection.py
@@ -1,7 +1,20 @@
 
-import Queue
+try:
+    import Queue
+except ImportError:
+    import queue as Queue
 import threading
-import httplib
+
+try:
+    import httplib
+except ImportError:
+    from http import client as httplib
+
+try:
+    from urllib import urlencode
+except ImportError:
+    from urllib.parse import urlencode
+
 import urllib
 import datetime
 import logging
@@ -64,7 +77,7 @@
         self.params = params
         # use queue to implement response, store AsyncResponse object
         self.response_q = Queue.Queue(1)
-        self.qpath = "%s?%s" % (self.path, urllib.urlencode(self.params))
+        self.qpath = "%s?%s" % (self.path, urlencode(self.params))
         self._response = None
         # response function to be called to handle the response
         self.rfunc = None
@@ -178,7 +191,7 @@
             mod_headers["Connection"] = "keep-alive"
             enc_body = None
             if body:  # if body is not empty
-                enc_body = urllib.urlencode(body)
+                enc_body = urlencode(body)
                 mod_headers[
                     "Content-type"] = "application/x-www-form-urlencoded"
                 #mod_headers["Accept"] = "text/plain"
diff --git a/tests/predictionio_test.py b/tests/predictionio_test.py
index 9f2e8d7..9442019 100644
--- a/tests/predictionio_test.py
+++ b/tests/predictionio_test.py
@@ -6,7 +6,10 @@
 import threading
 import time
 
-import httplib
+try:
+    import httplib
+except ImportError:
+    from http import client as httplib
 import urllib
 
 APP_KEY = "GToKwk78As0LBp2fAx2YNUBPZFZvtwy6MJkGwRASiD6Q77JjBnTaXBxzBTd52ICE" # replace this with your AppKey
@@ -17,7 +20,7 @@
     err = "Require PredictionIO Python SDK version >= %s" % MIN_VERSION
     raise Exception(err)
 
-print predictionio.__version__
+#print predictionio.__version__
 #predictionio.connection.enable_log()
 
 class TestPredictionIO(unittest.TestCase):
@@ -81,7 +84,7 @@
         # read, modify, write
         user3 = client.get_user(uid3)
         self.assertEqual(user3, {"pio_uid" : uid3, "pio_latlng" : [4.5,67.8], "pio_inactive" : True})
-        del user3["pio_uid"] 
+        del user3["pio_uid"]
         user3["pio_latlng"] = [5.6,10.11]
         user3["pio_inactive"] = False
         user3["custom1"] = "food"
@@ -125,7 +128,7 @@
         item3 = client.get_item(iid3)
         item4 = client.get_item(iid4)
         item5 = client.get_item(iid5)
-        
+
         del item1["pio_startT"] # pio_startT is automatically inserted, don't compare
         self.assertEqual(item1, {"pio_iid": iid1, "pio_itypes": ("t1", "t2", "t3") } )
         del item2["pio_startT"]
@@ -149,7 +152,7 @@
         # others still exist
         item3 = client.get_item(iid3)
         self.assertEqual(item3, {"pio_iid": iid3, "pio_itypes": ("t2",), "pio_price": 4.99, "pio_profit": 2.0, "pio_startT": 12345667, "pio_endT": 4567788, "pio_latlng": [1.345, 9.876], "pio_inactive": True } )
-        
+
         # read, modify, write
         del item3["pio_iid"]
         item3_itypes = item3.pop("pio_itypes")
@@ -158,7 +161,7 @@
         client.create_item(iid3, item3_itypes, item3)
         updated_item3 = client.get_item(iid3)
         self.assertEqual(updated_item3, {"pio_iid": iid3, "pio_itypes": ("t2",), "pio_price": 6.99, "pio_profit": 2.0, "pio_startT": 12345667, "pio_endT": 4567788, "pio_latlng": [1.345, 9.876], "pio_inactive": True, "custom1": "some value" } )
-        
+
         client.close()
 
     def test_item(self):
@@ -213,12 +216,12 @@
         client.identify("u111")
         for i in range(100):
             client.arecord_action_on_item("like", str(i))
-        
+
         n = 1
         while n > 0:
             n = client.pending_requests()
             time.sleep(0.1)
-            print n
+            #print n
 
         client.close()
 
@@ -233,7 +236,7 @@
         while n > 0:
             n = client.pending_requests()
             time.sleep(0.1)
-            print n
+            #print n
 
         client.close()
 
