diff --git a/main.py b/main.py
index 960c3c2a67df8c08e6947f443324781f42f6c59c..3087721f30cb1174b80cc9ee278ae2749b98ec32 100644
--- a/main.py
+++ b/main.py
@@ -36,18 +36,18 @@ def mirror(src, dst, bucket, tmp_directory):
         logger.error("The destination bucket does not exist: let's make it!")
         dst.make_bucket(bucket)
 
-    src_object_names = set([obj.object_name.encode('utf-8') for obj in src_objects_list])
-    dst_object_names = set([obj.object_name.encode('utf-8') for obj in dst_objects_list])
+    src_object_names = set([ obj.object_name for obj in src_objects_list ])
+    dst_object_names = set([ obj.object_name for obj in dst_objects_list ])
 
     policy = src.get_bucket_policy(bucket).decode('utf-8')
     logger.debug("Policy of the source bucket: {0}".format(policy))
     dst.set_bucket_policy(bucket, policy)
 
-    object_names_to_cp = src_object_names - dst_object_names
-    object_names_to_rm = dst_object_names - src_object_names
+    object_names_to_cp = list(src_object_names - dst_object_names)
+    object_names_to_rm = list(dst_object_names - src_object_names)
 
     if len( object_names_to_cp ) > 0:
-        logger.debug("The following objects were only found in the source bucket: {0}".format(str(list(object_names_to_cp))))
+        logger.debug("The following objects were only found in the source bucket: {0}".format(str(object_names_to_cp)))
 
         for object_name in object_names_to_cp:
             # print(obj.bucket_name, obj.object_name.encode('utf-8'), obj.last_modified,
@@ -78,7 +78,7 @@ def mirror(src, dst, bucket, tmp_directory):
         logger.debug('No object to copy.')
 
     if len( object_names_to_rm ) > 0:
-        logger.debug("The following objects were only found in the destination bucket: {0}".format(str(list(object_names_to_rm))))
+        logger.debug("The following objects were only found in the destination bucket: {0}".format(str(object_names_to_rm)))
 
         try:
             for del_err in dst.remove_objects(bucket, object_names_to_rm):