diff --git a/hoodle-parser.cabal b/hoodle-parser.cabal
--- a/hoodle-parser.cabal
+++ b/hoodle-parser.cabal
@@ -1,5 +1,5 @@
 Name:		hoodle-parser
-Version:	0.2.1
+Version:	0.2.2
 Synopsis:       Hoodle file parser
 Description: 	Text parser for hoodle xml file
 Homepage:       http://ianwookim.org/hoodle
@@ -20,15 +20,15 @@
   ghc-options: 	-Wall -funbox-strict-fields -fno-warn-unused-do-bind
   ghc-prof-options: -caf-all -auto-all
   Build-Depends: base == 4.*, 
-                 mtl == 2.*, 
-                 transformers == 0.3.*, 
-                 attoparsec == 0.10.*, 
+                 mtl > 2, 
+                 transformers >= 0.3, 
+                 attoparsec >= 0.10, 
                  bytestring >= 0.9, 
                  containers >= 0.4, 
-                 strict == 0.3.*, 
-                 hoodle-types >= 0.2.1, 
-                 xournal-types >= 0.5.0.1,
-                 text == 0.11.*,
+                 strict >= 0.3, 
+                 hoodle-types >= 0.2.2, 
+                 xournal-types >= 0.5.0.2,
+                 text >= 0.11,
                  lens >= 2.5, 
                  either >= 3.1
   Exposed-Modules: 
diff --git a/src/Text/Hoodle/Parse/Attoparsec.hs b/src/Text/Hoodle/Parse/Attoparsec.hs
--- a/src/Text/Hoodle/Parse/Attoparsec.hs
+++ b/src/Text/Hoodle/Parse/Attoparsec.hs
@@ -127,7 +127,7 @@
 
 
 -- | 
-onestroke :: Parser H.Item 
+onestroke :: Parser H.Stroke --- H.Item 
 onestroke =  do 
     xstrk <- xmlstroke 
     let r = case xstrk_width xstrk of 
@@ -138,7 +138,8 @@
               VarWidth ws -> let xyz = mkXYZ (xstrk_xydata xstrk) ws
                              in (H.VWStroke <$> xstrk_tool <*> xstrk_color   
                                   <*> pure xyz) xstrk
-    (return . H.ItemStroke) r 
+    -- (return . H.ItemStroke) r 
+    return r 
 
 -- | 
 mkXYZ :: [Pair Double Double] -> [Double] -> [(Double,Double,Double)]
@@ -338,7 +339,7 @@
 layer = do trim
            layerheader <?> "layer"
            trim
-           itms <- many (try onestroke <|> try img <|> try svg_obj <|> link)
+           itms <- many (try (H.ItemStroke <$> onestroke) <|> try img <|> try svg_obj <|> link)
            trim
            layerclose 
            return $ H.Layer itms
@@ -364,11 +365,21 @@
               string "revmd5=\""
               md5str <- manyTill anyChar (try (char '"'))
               skipSpace 
-              string "revtxt=\""
-              txtstr <- manyTill anyChar (try (char '"')) 
-              skipSpace
-              string "/>"
-              return (H.Revision (B.pack md5str) (B.pack txtstr))
+              (try (do string "revtxt=\""
+                       txtstr <- manyTill anyChar (try (char '"')) 
+                       skipSpace
+                       string "/>"
+                       return (H.Revision (B.pack md5str) (B.pack txtstr)))
+               <|> (do string "type=\"ink\""
+                       skipSpace
+                       char '>'
+                       skipSpace
+                       strks <- many1 onestroke
+                       skipSpace
+                       string "</revision>"
+                       return (H.RevisionInk (B.pack md5str) strks)))
+              
+                      
 
 
 embeddedpdf :: Parser (B.ByteString) 
