diff --git a/generator/Data/XCB/Python/Parse.hs b/generator/Data/XCB/Python/Parse.hs
--- a/generator/Data/XCB/Python/Parse.hs
+++ b/generator/Data/XCB/Python/Parse.hs
@@ -92,7 +92,7 @@
     processXHeader :: XHeader
                    -> State TypeInfoMap (String, Suite ())
     processXHeader header = do
-      let imports = [mkImport "xcffib", mkImport "struct", mkImport "six"]
+      let imports = [mkImport "xcffib", mkImport "struct", mkImport "io"]
           version = mkVersion header
           key = maybeToList $ mkKey header
           globals = [mkDict "_events", mkDict "_errors"]
@@ -430,7 +430,7 @@
       "ValueParams other than CARD{16,32} not allowed.")
 
 buf :: Suite ()
-buf = [mkAssign "buf" (mkCall "six.BytesIO" noArgs)]
+buf = [mkAssign "buf" (mkCall "io.BytesIO" noArgs)]
 
 mkPackStmts :: String
             -> String
diff --git a/test/generator/enum.py b/test/generator/enum.py
--- a/test/generator/enum.py
+++ b/test/generator/enum.py
@@ -1,6 +1,6 @@
 import xcffib
 import struct
-import six
+import io
 _events = {}
 _errors = {}
 class DeviceUse:
diff --git a/test/generator/error.py b/test/generator/error.py
--- a/test/generator/error.py
+++ b/test/generator/error.py
@@ -1,6 +1,6 @@
 import xcffib
 import struct
-import six
+import io
 MAJOR_VERSION = 2
 MINOR_VERSION = 2
 key = xcffib.ExtensionKey("ERROR")
@@ -15,7 +15,7 @@
         self.bad_value, self.minor_opcode, self.major_opcode = unpacker.unpack("xx2xIHBx")
         self.bufsize = unpacker.offset - base
     def pack(self):
-        buf = six.BytesIO()
+        buf = io.BytesIO()
         buf.write(struct.pack("=B", 1))
         buf.write(struct.pack("=x2xIHBx", self.bad_value, self.minor_opcode, self.major_opcode))
         return buf.getvalue()
diff --git a/test/generator/event.py b/test/generator/event.py
--- a/test/generator/event.py
+++ b/test/generator/event.py
@@ -1,6 +1,6 @@
 import xcffib
 import struct
-import six
+import io
 MAJOR_VERSION = 1
 MINOR_VERSION = 4
 key = xcffib.ExtensionKey("EVENT")
@@ -15,7 +15,7 @@
         self.rotation, self.timestamp, self.config_timestamp, self.root, self.request_window, self.sizeID, self.subpixel_order, self.width, self.height, self.mwidth, self.mheight = unpacker.unpack("xB2xIIIIHHHHHH")
         self.bufsize = unpacker.offset - base
     def pack(self):
-        buf = six.BytesIO()
+        buf = io.BytesIO()
         buf.write(struct.pack("=B", 0))
         buf.write(struct.pack("=B2xIIIIHHHHHH", self.rotation, self.timestamp, self.config_timestamp, self.root, self.request_window, self.sizeID, self.subpixel_order, self.width, self.height, self.mwidth, self.mheight))
         buf_len = len(buf.getvalue())
diff --git a/test/generator/eventstruct.py b/test/generator/eventstruct.py
--- a/test/generator/eventstruct.py
+++ b/test/generator/eventstruct.py
@@ -1,13 +1,13 @@
 import xcffib
 import struct
-import six
+import io
 _events = {}
 _errors = {}
 class EventForSend(xcffib.Buffer):
     pass
 class eventstructExtension(xcffib.Extension):
     def SendExtensionEvent(self, device_id, propagate, num_classes, num_events, events, classes, is_checked=False):
-        buf = six.BytesIO()
+        buf = io.BytesIO()
         buf.write(struct.pack("=xx2xBBHB3x", device_id, propagate, num_classes, num_events))
         buf.write(xcffib.pack_list(events, EventForSend))
         buf.write(xcffib.pack_list(classes, "B"))
diff --git a/test/generator/no_sequence.py b/test/generator/no_sequence.py
--- a/test/generator/no_sequence.py
+++ b/test/generator/no_sequence.py
@@ -1,6 +1,6 @@
 import xcffib
 import struct
-import six
+import io
 _events = {}
 _errors = {}
 class KeymapNotifyEvent(xcffib.Event):
@@ -13,7 +13,7 @@
         self.keys = xcffib.List(unpacker, "B", 31)
         self.bufsize = unpacker.offset - base
     def pack(self):
-        buf = six.BytesIO()
+        buf = io.BytesIO()
         buf.write(struct.pack("=B", 11))
         buf.write(xcffib.pack_list(self.keys, "B"))
         buf_len = len(buf.getvalue())
diff --git a/test/generator/render.py b/test/generator/render.py
--- a/test/generator/render.py
+++ b/test/generator/render.py
@@ -1,6 +1,6 @@
 import xcffib
 import struct
-import six
+import io
 MAJOR_VERSION = 0
 MINOR_VERSION = 11
 key = xcffib.ExtensionKey("RENDER")
@@ -15,7 +15,7 @@
         self.red, self.green, self.blue, self.alpha = unpacker.unpack("HHHH")
         self.bufsize = unpacker.offset - base
     def pack(self):
-        buf = six.BytesIO()
+        buf = io.BytesIO()
         buf.write(struct.pack("=HHHH", self.red, self.green, self.blue, self.alpha))
         return buf.getvalue()
     fixed_size = 8
@@ -36,7 +36,7 @@
         self.x, self.y, self.width, self.height = unpacker.unpack("hhHH")
         self.bufsize = unpacker.offset - base
     def pack(self):
-        buf = six.BytesIO()
+        buf = io.BytesIO()
         buf.write(struct.pack("=hhHH", self.x, self.y, self.width, self.height))
         return buf.getvalue()
     fixed_size = 8
@@ -50,7 +50,7 @@
         return self
 class renderExtension(xcffib.Extension):
     def FillRectangles(self, op, dst, color, rects_len, rects, is_checked=False):
-        buf = six.BytesIO()
+        buf = io.BytesIO()
         buf.write(struct.pack("=xx2xB3xI", op, dst))
         buf.write(color.pack() if hasattr(color, "pack") else COLOR.synthetic(*color).pack())
         buf.write(xcffib.pack_list(rects, RECTANGLE))
diff --git a/test/generator/render_1.7.py b/test/generator/render_1.7.py
--- a/test/generator/render_1.7.py
+++ b/test/generator/render_1.7.py
@@ -1,6 +1,6 @@
 import xcffib
 import struct
-import six
+import io
 MAJOR_VERSION = 0
 MINOR_VERSION = 11
 key = xcffib.ExtensionKey("RENDER")
diff --git a/test/generator/request.py b/test/generator/request.py
--- a/test/generator/request.py
+++ b/test/generator/request.py
@@ -1,11 +1,11 @@
 import xcffib
 import struct
-import six
+import io
 _events = {}
 _errors = {}
 class requestExtension(xcffib.Extension):
     def CreateWindow(self, depth, wid, parent, x, y, width, height, border_width, _class, visual, value_mask, value_list, is_checked=False):
-        buf = six.BytesIO()
+        buf = io.BytesIO()
         buf.write(struct.pack("=xx2xBIIhhHHHHI", depth, wid, parent, x, y, width, height, border_width, _class, visual))
         buf.write(struct.pack("=I", value_mask))
         buf.write(xcffib.pack_list(value_list, "I"))
diff --git a/test/generator/request_reply.py b/test/generator/request_reply.py
--- a/test/generator/request_reply.py
+++ b/test/generator/request_reply.py
@@ -1,6 +1,6 @@
 import xcffib
 import struct
-import six
+import io
 _events = {}
 _errors = {}
 class STR(xcffib.Struct):
@@ -13,7 +13,7 @@
         self.name = xcffib.List(unpacker, "c", self.name_len)
         self.bufsize = unpacker.offset - base
     def pack(self):
-        buf = six.BytesIO()
+        buf = io.BytesIO()
         buf.write(struct.pack("=B", self.name_len))
         buf.write(xcffib.pack_list(self.name, "c"))
         return buf.getvalue()
@@ -36,7 +36,7 @@
     reply_type = ListExtensionsReply
 class request_replyExtension(xcffib.Extension):
     def ListExtensions(self, is_checked=True):
-        buf = six.BytesIO()
+        buf = io.BytesIO()
         buf.write(struct.pack("=xx2x"))
         return self.send_request(99, buf, ListExtensionsCookie, is_checked=is_checked)
 xcffib._add_ext(key, request_replyExtension, _events, _errors)
diff --git a/test/generator/struct.py b/test/generator/struct.py
--- a/test/generator/struct.py
+++ b/test/generator/struct.py
@@ -1,6 +1,6 @@
 import xcffib
 import struct
-import six
+import io
 _events = {}
 _errors = {}
 class AxisInfo(xcffib.Struct):
@@ -12,7 +12,7 @@
         self.resolution, self.minimum, self.maximum = unpacker.unpack("Iii")
         self.bufsize = unpacker.offset - base
     def pack(self):
-        buf = six.BytesIO()
+        buf = io.BytesIO()
         buf.write(struct.pack("=Iii", self.resolution, self.minimum, self.maximum))
         return buf.getvalue()
     fixed_size = 12
@@ -33,7 +33,7 @@
         self.axes = xcffib.List(unpacker, AxisInfo, self.axes_len)
         self.bufsize = unpacker.offset - base
     def pack(self):
-        buf = six.BytesIO()
+        buf = io.BytesIO()
         buf.write(struct.pack("=BBBBI", self.class_id, self.len, self.axes_len, self.mode, self.motion_size))
         buf.write(xcffib.pack_list(self.axes, AxisInfo))
         return buf.getvalue()
diff --git a/test/generator/switch.py b/test/generator/switch.py
--- a/test/generator/switch.py
+++ b/test/generator/switch.py
@@ -1,6 +1,6 @@
 import xcffib
 import struct
-import six
+import io
 _events = {}
 _errors = {}
 class INT64(xcffib.Struct):
@@ -12,7 +12,7 @@
         self.hi, self.lo = unpacker.unpack("iI")
         self.bufsize = unpacker.offset - base
     def pack(self):
-        buf = six.BytesIO()
+        buf = io.BytesIO()
         buf.write(struct.pack("=iI", self.hi, self.lo))
         return buf.getvalue()
     fixed_size = 8
@@ -60,7 +60,7 @@
     reply_type = GetPropertyWithPadReply
 class switchExtension(xcffib.Extension):
     def GetProperty(self, value_mask, items, is_checked=True):
-        buf = six.BytesIO()
+        buf = io.BytesIO()
         buf.write(struct.pack("=xx2xI", value_mask))
         if value_mask & CA.Counter:
             counter = items.pop(0)
@@ -76,7 +76,7 @@
             buf.write(struct.pack("=I", events))
         return self.send_request(59, buf, GetPropertyCookie, is_checked=is_checked)
     def GetPropertyWithPad(self, is_checked=True):
-        buf = six.BytesIO()
+        buf = io.BytesIO()
         buf.write(struct.pack("=xx2x"))
         return self.send_request(60, buf, GetPropertyWithPadCookie, is_checked=is_checked)
 xcffib._add_ext(key, switchExtension, _events, _errors)
diff --git a/test/generator/type_pad.py b/test/generator/type_pad.py
--- a/test/generator/type_pad.py
+++ b/test/generator/type_pad.py
@@ -1,6 +1,6 @@
 import xcffib
 import struct
-import six
+import io
 _events = {}
 _errors = {}
 class CHARINFO(xcffib.Struct):
@@ -12,7 +12,7 @@
         self.left_side_bearing, self.right_side_bearing, self.character_width, self.ascent, self.descent, self.attributes = unpacker.unpack("hhhhhH")
         self.bufsize = unpacker.offset - base
     def pack(self):
-        buf = six.BytesIO()
+        buf = io.BytesIO()
         buf.write(struct.pack("=hhhhhH", self.left_side_bearing, self.right_side_bearing, self.character_width, self.ascent, self.descent, self.attributes))
         return buf.getvalue()
     fixed_size = 12
@@ -35,7 +35,7 @@
         self.name, self.value = unpacker.unpack("II")
         self.bufsize = unpacker.offset - base
     def pack(self):
-        buf = six.BytesIO()
+        buf = io.BytesIO()
         buf.write(struct.pack("=II", self.name, self.value))
         return buf.getvalue()
     fixed_size = 8
@@ -66,7 +66,7 @@
     reply_type = ListFontsWithInfoReply
 class type_padExtension(xcffib.Extension):
     def ListFontsWithInfo(self, max_names, pattern_len, pattern, is_checked=True):
-        buf = six.BytesIO()
+        buf = io.BytesIO()
         buf.write(struct.pack("=xx2xxHH", max_names, pattern_len))
         buf.write(xcffib.pack_list(pattern, "c"))
         return self.send_request(50, buf, ListFontsWithInfoCookie, is_checked=is_checked)
diff --git a/test/generator/union.py b/test/generator/union.py
--- a/test/generator/union.py
+++ b/test/generator/union.py
@@ -1,6 +1,6 @@
 import xcffib
 import struct
-import six
+import io
 _events = {}
 _errors = {}
 class ClientMessageData(xcffib.Union):
@@ -12,7 +12,7 @@
         self.data16 = xcffib.List(unpacker.copy(), "H", 10)
         self.data32 = xcffib.List(unpacker.copy(), "I", 5)
     def pack(self):
-        buf = six.BytesIO()
+        buf = io.BytesIO()
         buf.write(xcffib.pack_list(self.data8, "B"))
         return buf.getvalue()
 xcffib._add_ext(key, unionExtension, _events, _errors)
diff --git a/test/generator/xproto_1.7.py b/test/generator/xproto_1.7.py
--- a/test/generator/xproto_1.7.py
+++ b/test/generator/xproto_1.7.py
@@ -1,6 +1,6 @@
 import xcffib
 import struct
-import six
+import io
 MAJOR_VERSION = 0
 MINOR_VERSION = 11
 key = xcffib.ExtensionKey("XPROTO")
diff --git a/xcffib.cabal b/xcffib.cabal
--- a/xcffib.cabal
+++ b/xcffib.cabal
@@ -1,5 +1,5 @@
 name:                xcffib
-version:             0.12.1
+version:             1.0.0
 synopsis:            A cffi-based python binding for X
 homepage:            http://github.com/tych0/xcffib
 license:             OtherLicense
