diff --git a/Data/XCB/FromXML.hs b/Data/XCB/FromXML.hs
--- a/Data/XCB/FromXML.hs
+++ b/Data/XCB/FromXML.hs
@@ -108,11 +108,12 @@
 findEvent pname xs = 
       case List.find f xs of
         Nothing -> Nothing
-        Just (XEvent name code elems) -> Just $ EventDetails name code elems
-   where f (XEvent name _ _) | name == pname = True
+        Just (XEvent name code elems noseq) ->
+            Just $ EventDetails name code elems noseq
+   where f (XEvent name _ _ _) | name == pname = True
          f _ = False 
 
-data EventDetails = EventDetails Name Int [StructElem]
+data EventDetails = EventDetails Name Int [StructElem] (Maybe Bool)
 data ErrorDetails = ErrorDetails Name Int [StructElem]
 
 ---
@@ -197,9 +198,10 @@
 xevent elem = do
   name <- elem `attr` "name"
   number <- elem `attr` "number" >>= readM
+  let noseq = ensureUpper `liftM` (elem `attr` "no-sequence-number") >>= readM
   fields <- mapAlt structField $ elChildren elem
   guard $ not $ null fields
-  return $ XEvent name number fields
+  return $ XEvent name number fields noseq
 
 xevcopy :: Element -> Parse XDecl
 xevcopy elem = do
@@ -208,10 +210,13 @@
   ref <- elem `attr` "ref"
   -- do we have a qualified ref?
   let (mname,evname) = splitRef ref
-  details <- lookupEvent mname evname 
-  return $ XEvent name number $ case details of
-               Nothing -> error $ "Unresolved event: " ++ show mname ++ " " ++ ref
-               Just (EventDetails _ _ x) -> x
+  details <- lookupEvent mname evname
+  return $ let EventDetails _ _ fields noseq =
+                 case details of
+                   Nothing ->
+                       error $ "Unresolved event: " ++ show mname ++ " " ++ ref
+                   Just x -> x  
+           in XEvent name number fields noseq
 
 -- we need to do string processing to distinguish qualified from
 -- unqualified types.
diff --git a/Data/XCB/Pretty.hs b/Data/XCB/Pretty.hs
--- a/Data/XCB/Pretty.hs
+++ b/Data/XCB/Pretty.hs
@@ -103,7 +103,11 @@
                                     ,text "as"
                                     ,toDoc typ
                                     ]
-    toDoc (XEvent nm n elems) =
+    toDoc (XEvent nm n elems (Just True)) =
+        hang (text "Event:" <+> text nm <> char ',' <> toDoc n <+>
+             parens (text "No sequence number")) 2 $
+             vcat $ map toDoc elems
+    toDoc (XEvent nm n elems _) =
         hang (text "Event:" <+> text nm <> char ',' <> toDoc n) 2 $
              vcat $ map toDoc elems
     toDoc (XRequest nm n elems mrep) = 
diff --git a/Data/XCB/Types.hs b/Data/XCB/Types.hs
--- a/Data/XCB/Types.hs
+++ b/Data/XCB/Types.hs
@@ -40,7 +40,7 @@
 -- XML files.
 data XDecl = XStruct  Name [StructElem]
            | XTypeDef Name Type
-           | XEvent Name Int [StructElem]
+           | XEvent Name Int [StructElem] (Maybe Bool)  -- ^ The boolean indicates if the event includes a sequence number.
            | XRequest Name Int [StructElem] (Maybe XReply)
            | XidType  Name
            | XidUnion  Name [XidUnionElem]
@@ -60,19 +60,14 @@
 type Name = String
 type XReply = [StructElem]
 type Ref = String
+type MaskName = Name
+type ListName = Name
 
+
 -- |Types may include a reference to the containing module.
 data Type = UnQualType Name
           | QualType Name Name
  deriving Show
-
-type MaskName = Name
-type ListName = Name
-
-data ExInfo = ExInfo Name Name Version
- deriving (Show)
-
-type Version = (String,String)
 
 data XidUnionElem = XidUnionElem Type
  deriving (Show)
diff --git a/xcb-types.cabal b/xcb-types.cabal
--- a/xcb-types.cabal
+++ b/xcb-types.cabal
@@ -1,5 +1,5 @@
 Name:         xcb-types
-Version:      0.1.0
+Version:      0.2.0
 Cabal-Version:  >= 1.2
 Synopsis:     Parses XML files used by the XCB project
 Description:   This package provides types which mirror the structures
