diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -6,3 +6,5 @@
    * Double buffer support
 0.5: 15 Jan 2012
    * ZipperSelect support
+0.6: 12 Feb 2012
+   * Variable width support
diff --git a/src/Graphics/Xournal/Render/BBoxMapPDF.hs b/src/Graphics/Xournal/Render/BBoxMapPDF.hs
--- a/src/Graphics/Xournal/Render/BBoxMapPDF.hs
+++ b/src/Graphics/Xournal/Render/BBoxMapPDF.hs
@@ -16,6 +16,7 @@
 
 module Graphics.Xournal.Render.BBoxMapPDF where
 
+import Control.Applicative
 import Graphics.Xournal.Render.Type 
 import Graphics.Xournal.Render.Generic
 import Graphics.Xournal.Render.Simple
@@ -41,48 +42,74 @@
 
 import Prelude hiding ((.),id,mapM, mapM_, sequence )
 
+-- | 
 
 type TPageBBoxMapPDF = TPageBBoxMapBkg BackgroundPDFDrawable 
 
+-- | 
+
 type TXournalBBoxMapPDF = TXournalBBoxMapBkg BackgroundPDFDrawable
 
 -- type TTempPageSelectPDF = GPage BackgroundPDFDrawable (TLayerSelectInPage []) TLayerBBox
 
+-- | 
+
 type TTempPageSelectPDF = GPage BackgroundPDFDrawable (TLayerSelectInPage []) TLayerBBox
 
+-- | 
+
 type TTempXournalSelectPDF = GSelect (IntMap TPageBBoxMapPDF) (Maybe (Int, TTempPageSelectPDF))
 
+-- | 
+
 newtype LyBuf = LyBuf { mbuffer :: Maybe Surface } 
 
+-- | 
+
 type instance StrokeTypeFromLayer (TLayerBBoxBuf b) = StrokeBBox 
 
+-- | 
+
 type TPageBBoxMapPDFBuf = 
   TPageBBoxMapBkgBuf BackgroundPDFDrawable LyBuf
   
+-- |   
+
 type TXournalBBoxMapPDFBuf = 
   TXournalBBoxMapBkgBuf BackgroundPDFDrawable LyBuf
   
+-- |
+
 type TTempPageSelectPDFBuf = 
   GPage BackgroundPDFDrawable (TLayerSelectInPageBuf ZipperSelect) (TLayerBBoxBuf LyBuf)
 
+-- | 
+
 type TTempXournalSelectPDFBuf = 
   GSelect (IntMap TPageBBoxMapPDFBuf) (Maybe (Int, TTempPageSelectPDFBuf))
 
+-- | 
 
 instance GCast (TLayerBBox)  (TLayerBBoxBuf LyBuf) where
   gcast lyr = GLayerBuf (LyBuf Nothing) (get g_strokes lyr) 
 
+-- | 
+  
 instance GCast Layer (TLayerBBoxBuf LyBuf) where
   gcast lyr = gcast (fromLayer lyr :: TLayerBBox)
 
+-- | 
+  
 emptyTLayerBBoxBufLyBuf :: IO (TLayerBBoxBuf LyBuf)
 emptyTLayerBBoxBufLyBuf = updateLayerBuf Nothing $ gcast emptyLayer 
 
+-- | 
+
 instance GBackgroundable BackgroundPDFDrawable where 
   gFromBackground = bkgPDFFromBkg 
   gToBackground = bkgFromBkgPDF
 
-
+-- | 
 
 tlayerBBoxFromTLayerSelect :: TLayerSelect TLayerBBox -> TLayerBBox 
 tlayerBBoxFromTLayerSelect l = 
@@ -90,6 +117,8 @@
     Left strs -> GLayer strs 
     Right alist -> GLayer . Prelude.concat $ interleave id unHitted alist
 
+-- | 
+
 tlayerbufFromTLayerSelectBuf :: TLayerSelectBuf (TLayerBBoxBuf b) 
                                 -> (TLayerBBoxBuf b) 
 tlayerbufFromTLayerSelectBuf l = 
@@ -98,23 +127,18 @@
     Right alist -> GLayerBuf (get g_buffer l) . Prelude.concat 
                    $ interleave id unHitted alist
   
+-- | 
+    
 instance GCast TTempPageSelectPDF TPageBBoxMapPDF where      
   gcast = tpageBBoxMapPDFFromTTempPageSelectPDF
 
-
--- | deprecated 
-
-tpageBBoxMapPDFFromTTempPageSelectPDF :: TTempPageSelectPDF -> TPageBBoxMapPDF
-tpageBBoxMapPDFFromTTempPageSelectPDF p = 
-  let TLayerSelectInPage s others = get g_layers p 
-      s' = tlayerBBoxFromTLayerSelect s
-  in GPage (get g_dimension p) (get g_background p) (gFromList (s':others))
-   
-     
-      
+-- |   
+  
 instance GCast TTempPageSelectPDFBuf TPageBBoxMapPDFBuf where      
   gcast = tpageBBoxMapPDFBufFromTTempPageSelectPDFBuf
       
+-- | 
+
 tpageBBoxMapPDFBufFromTTempPageSelectPDFBuf :: TTempPageSelectPDFBuf 
                                                -> TPageBBoxMapPDFBuf
 tpageBBoxMapPDFBufFromTTempPageSelectPDFBuf p = 
@@ -128,10 +152,13 @@
       Select (O (Just sz)) = normalizedothers 
   in GPage (get g_dimension p) (get g_background p) (Select . O . Just $ replace s' sz)
        
+-- | 
 
 instance GCast TPageBBoxMapPDFBuf TTempPageSelectPDFBuf where
   gcast = ttempPageSelectPDFBufFromTPageBBoxMapPDFBuf
 
+-- | 
+
 ttempPageSelectPDFBufFromTPageBBoxMapPDFBuf :: TPageBBoxMapPDFBuf
                                                -> TTempPageSelectPDFBuf
 ttempPageSelectPDFBufFromTPageBBoxMapPDFBuf p = 
@@ -145,13 +172,49 @@
       currtemp = GLayerBuf (get g_buffer curr) (TEitherAlterHitted . Left . gToList . get g_bstrokes $ curr)
   in  GPage (get g_dimension p) (get g_background p) 
             (TLayerSelectInPageBuf currtemp normalizedothers)
-        
-      
+
+-- | 
+
+instance GCast TXournalBBoxMapPDFBuf Xournal where
+  gcast = Xournal <$> get g_title 
+                  <*> gToList . fmap (toPageFromBuf gToBackground) . get g_pages 
+
+
+-- | 
+
+instance GCast TTempXournalSelectPDFBuf Xournal where 
+  gcast = Xournal <$> gselectTitle 
+                  <*> gToList . fmap (toPageFromBuf gToBackground) . gselectAll  
+
 ----------------------      
+----- Rendering   
 
+-- | 
 
+newtype InBBox a = InBBox a
 
+-- | 
 
+data InBBoxOption = InBBoxOption (Maybe BBox) 
+
+-- | 
+
+instance RenderOptionable (InBBox TLayerBBox) where
+  type RenderOption (InBBox TLayerBBox) = InBBoxOption 
+  cairoRenderOption (InBBoxOption mbbox) (InBBox layer) 
+    = cairoDrawLayerBBox mbbox layer 
+
+-- | 
+                             
+instance RenderOptionable (InBBox TPageBBoxMapPDF) where
+  type RenderOption (InBBox TPageBBoxMapPDF) = InBBoxOption 
+  cairoRenderOption (InBBoxOption mbbox) (InBBox page) = do 
+    cairoRenderOption (DrawPDFInBBox mbbox) (gbackground page, gdimension page) 
+    mapM_ (cairoDrawLayerBBox mbbox) . glayers $ page 
+
+
+-- |
+
 mkTXournalBBoxMapPDF :: Xournal -> IO TXournalBBoxMapPDF
 mkTXournalBBoxMapPDF xoj = do 
   let pgs = xoj_pages xoj 
@@ -208,8 +271,7 @@
           return bkgpdf
 #endif  
 
-
-
+-- | 
 
 mkTLayerBBoxBufFromNoBuf :: Dimension -> TLayerBBox -> IO (TLayerBBoxBuf LyBuf)
 mkTLayerBBoxBufFromNoBuf (Dim w h) lyr = do 
@@ -219,6 +281,8 @@
   return $ GLayerBuf { gbuffer = LyBuf (Just sfc), 
                        gbstrokes = strs }  -- temporary
 
+-- | 
+
 updateLayerBuf :: Maybe BBox -> TLayerBBoxBuf LyBuf -> IO (TLayerBBoxBuf LyBuf)
 updateLayerBuf mbbox lyr = do 
   case get g_buffer lyr of 
@@ -229,6 +293,7 @@
       return lyr
     _ -> return lyr
     
+-- | 
 
 mkTPageBBoxMapPDFBufFromNoBuf :: TPageBBoxMapPDF -> IO TPageBBoxMapPDFBuf
 mkTPageBBoxMapPDFBufFromNoBuf page = do 
@@ -238,6 +303,7 @@
   ls' <- mapM (mkTLayerBBoxBufFromNoBuf dim) ls
   return . GPage dim bkg . gFromList . gToList $ ls'
       
+-- | 
 
 mkTXournalBBoxMapPDFBufFromNoBuf :: TXournalBBoxMapPDF 
                                     -> IO TXournalBBoxMapPDFBuf
@@ -277,32 +343,14 @@
   GPage dim bkg . gFromList . gToList . fmap tlayerBBoxFromTLayerBBoxBuf $ ls
  
   
------ Rendering   
 
-newtype InBBox a = InBBox a
-
-data InBBoxOption = InBBoxOption (Maybe BBox) 
-
-instance RenderOptionable (InBBox TLayerBBox) where
-  type RenderOption (InBBox TLayerBBox) = InBBoxOption 
-  cairoRenderOption (InBBoxOption mbbox) (InBBox layer) 
-    = cairoDrawLayerBBox mbbox layer 
-
-                             
-instance RenderOptionable (InBBox TPageBBoxMapPDF) where
-  type RenderOption (InBBox TPageBBoxMapPDF) = InBBoxOption 
-  cairoRenderOption (InBBoxOption mbbox) (InBBox page) = do 
-    cairoRenderOption (DrawPDFInBBox mbbox) (gbackground page, gdimension page) 
-    mapM_ (cairoDrawLayerBBox mbbox) . glayers $ page 
-
     
 -- | page within a bbox. not implemented bbox part.
 
 cairoDrawPageBBoxPDF :: Maybe BBox -> TPageBBoxMapPDF -> Render ()
 cairoDrawPageBBoxPDF _mbbox page = cairoRender page  -- This is temporary
 
-
-
+-- | 
 
 cairoDrawLayerBBoxBuf :: Maybe BBox -> TLayerBBoxBuf LyBuf -> Render ()
 cairoDrawLayerBBoxBuf mbbox layer = do
@@ -327,3 +375,13 @@
   cairoRenderOption opt@(InBBoxOption mbbox) (InBBox page) = do 
     cairoRenderOption (DrawPDFInBBox mbbox) (get g_background page, get g_dimension page)
     mapM_ (cairoRenderOption opt . InBBox) .  get g_layers $ page
+
+
+
+-- | deprecated 
+
+tpageBBoxMapPDFFromTTempPageSelectPDF :: TTempPageSelectPDF -> TPageBBoxMapPDF
+tpageBBoxMapPDFFromTTempPageSelectPDF p = 
+  let TLayerSelectInPage s others = get g_layers p 
+      s' = tlayerBBoxFromTLayerSelect s
+  in GPage (get g_dimension p) (get g_background p) (gFromList (s':others))
diff --git a/src/Graphics/Xournal/Render/PDFBackground.hs b/src/Graphics/Xournal/Render/PDFBackground.hs
--- a/src/Graphics/Xournal/Render/PDFBackground.hs
+++ b/src/Graphics/Xournal/Render/PDFBackground.hs
@@ -12,31 +12,29 @@
 -- Stability   : experimental
 -- Portability : GHC
 --
+-----------------------------------------------------------------------------
 
 module Graphics.Xournal.Render.PDFBackground where
 
-
 import Control.Monad.State hiding (mapM_)
-import Prelude hiding (mapM_)
-
-
 import Data.Monoid 
 import Data.ByteString hiding (putStrLn)
 import qualified Data.ByteString.Char8 as C
-
 import Data.Xournal.Simple
 import Data.Xournal.BBox
 import Graphics.Xournal.Render.BBox 
 import Graphics.Xournal.Render.Generic
-
+--
 #ifdef POPPLER
 import qualified Graphics.UI.Gtk.Poppler.Document as Poppler
 import qualified Graphics.UI.Gtk.Poppler.Page as PopplerPage
 #endif
-
+--
 import Graphics.Rendering.Cairo
-
+import Prelude hiding (mapM_)
   
+-- | 
+
 data Context = Context { ctxt_domain :: ByteString
                        , ctxt_filename :: ByteString 
 #ifdef POPPLER
@@ -45,6 +43,8 @@
                        , ctxt_doc :: Maybe ()
 #endif 
                        }
+
+-- |
 
 data BackgroundPDFDrawable = 
   BkgPDFSolid { bkgpdf_color :: ByteString
diff --git a/src/Graphics/Xournal/Render/Type/Select.hs b/src/Graphics/Xournal/Render/Type/Select.hs
--- a/src/Graphics/Xournal/Render/Type/Select.hs
+++ b/src/Graphics/Xournal/Render/Type/Select.hs
@@ -10,6 +10,7 @@
 -- Stability   : experimental
 -- Portability : GHC
 --
+-----------------------------------------------------------------------------
 
 module Graphics.Xournal.Render.Type.Select where
 
diff --git a/xournal-render.cabal b/xournal-render.cabal
--- a/xournal-render.cabal
+++ b/xournal-render.cabal
@@ -1,5 +1,5 @@
 Name:		xournal-render
-Version:	0.6
+Version:	0.6.0
 Synopsis:       Xournal file renderer
 Description: 	Rendering library using cairo for xournal file format
 License: 	BSD3
@@ -20,7 +20,7 @@
 
 Library
   hs-source-dirs: src
-  ghc-options: 	-Wall -funbox-strict-fields -fno-warn-unused-do-bind
+  ghc-options: 	-Wall -fno-warn-orphans -funbox-strict-fields -fno-warn-unused-do-bind
   ghc-prof-options: -caf-all -auto-all
 
   if flag(poppler)
