diff --git a/hoodle-render.cabal b/hoodle-render.cabal
--- a/hoodle-render.cabal
+++ b/hoodle-render.cabal
@@ -1,5 +1,5 @@
 Name:		hoodle-render
-Version:	0.1.0
+Version:	0.2
 Synopsis:       Hoodle file renderer
 Description: 	Rendering library using cairo for hoodle file format
 License: 	BSD3
@@ -23,32 +23,25 @@
   ghc-options: 	-Wall -fno-warn-orphans -funbox-strict-fields -fno-warn-unused-do-bind
   ghc-prof-options: -caf-all -auto-all
 
-  if flag(poppler)
-    Build-Depends: base == 4.*, 
-                   mtl == 2.*, 
-                   containers == 0.4.*, 
-                   cairo == 0.12.*, 
-                   strict == 0.3.*, 
-                   bytestring == 0.9.*,
-                   poppler == 0.12.*, 
-                   lens >= 2.4 && < 2.7, 
-                   hoodle-types >= 0.0.999 && < 0.2,
-                   TypeCompose == 0.9.*
-  else
-    Build-Depends: base == 4.*, 
-                   mtl == 2.*, 
-                   containers == 0.4.*, 
-                   cairo == 0.12.*, 
-                   strict == 0.3.*, 
-                   bytestring == 0.9.*,
-                   lens >= 2.4 && < 2.7, 
-                   hoodle-types >= 0.0.999 && < 0.2,
-                   TypeCompose == 0.9.*
+  Build-Depends: base == 4.*, 
+                 mtl == 2.*, 
+                 containers == 0.4.*, 
+                 cairo == 0.12.*, 
+                 strict == 0.3.*, 
+                 bytestring == 0.9.*,
+                 lens >= 2.4, 
+                 hoodle-types >= 0.1 && < 0.2,
+                 TypeCompose == 0.9.*
 
+  if flag(poppler)
+    Build-Depends: poppler >= 0.12.2.1
+  else 
+    Build-Depends: 
 
   Exposed-Modules: 
                    Graphics.Hoodle.Render 
                    Graphics.Hoodle.Render.Background
+                   Graphics.Hoodle.Render.Debug
                    Graphics.Hoodle.Render.Generic
                    Graphics.Hoodle.Render.Highlight
                    Graphics.Hoodle.Render.Item  
@@ -61,21 +54,5 @@
                    Graphics.Hoodle.Render.Type.Select
                    Graphics.Hoodle.Render.Util
                    Graphics.Hoodle.Render.Util.HitTest
-
-
   if flag(poppler)
     cpp-options: -DPOPPLER
-                  
-
-                   -- Graphics.Hoodle.Render.SimpleNew 
-                   -- Graphics.Hoodle.Render.BBox
-                   -- Graphics.Hoodle.Render.PDFBackground
-                   -- Graphics.Hoodle.Render.BBoxMapPDF
-                   -- Graphics.Hoodle.Render.BBoxMapPDFImg
-                   -- Graphics.Hoodle.Render.Type
-                   -- Graphics.Hoodle.Render.Type.BBoxMapPDFImg
-                   -- Graphics.Hoodle.Render.Type.Select
-                   -- Graphics.Hoodle.Render.BBoxOnly
-                   -- Graphics.Hoodle.Render.InBBox
-                   -- Graphics.Hoodle.Render.Item
-                   -- Graphics.Hoodle.Render.Simple
diff --git a/src/Graphics/Hoodle/Render.hs b/src/Graphics/Hoodle/Render.hs
--- a/src/Graphics/Hoodle/Render.hs
+++ b/src/Graphics/Hoodle/Render.hs
@@ -18,38 +18,23 @@
 
 module Graphics.Hoodle.Render 
 (      
--- * dummy rendering 
-  renderRBkg_Dummy  
 -- * simple rendering using non-R-structure   
-, renderStrk
+  renderStrk
 , renderImg
 , renderBkg
 , renderItem 
 , renderPage
 -- * render in bbox using non R-structure 
 , renderBkg_InBBox
-
 -- * simple rendering using R-structure 
 , renderRBkg
 , renderRItem 
--- * nopdf
-, renderRBkg_NoPDF
-
 -- * render in bbox
 , renderRLayer_InBBox
 , renderRBkg_InBBox 
-
--- * render only bbox (for debug purpose)
-, renderStrkBBx_BBoxOnly
-, renderImgBBx_BBoxOnly
-, renderRItem_BBoxOnly
-, renderRLayer_BBoxOnly
-, renderRPage_BBoxOnly
-
 -- * render using buf 
 , renderRBkg_Buf
 , renderRLayer_InBBoxBuf
-
 -- * buffer update 
 , updateLayerBuf
 , updatePageBuf 
@@ -59,7 +44,6 @@
 , cnstrctRBkg_StateT
 , cnstrctRPage_StateT
 , cnstrctRHoodle  
-  
 ) where
 
 import           Control.Lens 
@@ -90,16 +74,7 @@
 import Prelude hiding (curry,uncurry,mapM,mapM_,concatMap)
 
 
------ 
--- Dummy (for testing) 
------
 
-renderRBkg_Dummy :: (RBackground,Dimension) -> Render () 
-renderRBkg_Dummy (_,Dim w h) = do 
-    setSourceRGBA 1 1 1 1
-    rectangle 0 0 w h 
-    fill 
-
 -----
 -- simple 
 --- 
@@ -194,9 +169,9 @@
 ----
 
 -- | 
-renderRBkg :: (RBackground,Dimension) -> Render ()
-renderRBkg r@(RBkgSmpl _ _ _,dim) = renderBkg (rbkg2Bkg (fst r),dim)
-renderRBkg (RBkgPDF _ _ _ p _,dim) = do
+renderRBkg :: (RBackground,Dimension) -> Render (RBackground,Dimension)
+renderRBkg (r@(RBkgSmpl _ _ _),dim) = renderBkg (rbkg2Bkg r,dim) >> return (r,dim)
+renderRBkg (r@(RBkgPDF _ _ _ p _),dim) = do
   case p of 
     Nothing -> return () 
     Just pg -> do 
@@ -207,11 +182,12 @@
 #ifdef POPPLER
       PopplerPage.pageRender pg
 #endif     
+  return (r,dim) 
 
 -- |
-renderRItem :: RItem -> Render () 
-renderRItem (RItemStroke strk) = renderStrk (strkbbx_strk strk)
-renderRItem (RItemImage img msfc) = do  
+renderRItem :: RItem -> Render RItem  
+renderRItem itm@(RItemStroke strk) = renderStrk (strkbbx_strk strk) >> return itm
+renderRItem itm@(RItemImage img msfc) = do  
   case msfc of
     Nothing -> renderImg (imgbbx_img img)
     Just sfc -> do 
@@ -227,79 +203,18 @@
       paint 
       restore
       resetClip 
-  
-  -- renderImg (imgbbx_img img) 
-
---------------
--- BBoxOnly --
---------------
-
--- | render only bounding box of a StrokeBBox      
-renderStrkBBx_BBoxOnly :: StrokeBBox -> Render () 
-renderStrkBBx_BBoxOnly sbbox = do  
-    let s = strkbbx_strk sbbox
-    case M.lookup (stroke_color s) predefined_pencolor of 
-      Just (r,g,b,a) -> setSourceRGBA r g b a
-      Nothing -> setSourceRGBA 0 0 0 1 
-    setSourceRGBA 0 0 0 1
-    setLineWidth (stroke_width s) 
-    let BBox (x1,y1) (x2,y2) = strkbbx_bbx sbbox
-    rectangle x1 y1 (x2-x1) (y2-y1)
-    stroke
-  
--- |     
-renderImgBBx_BBoxOnly :: ImageBBox -> Render () 
-renderImgBBx_BBoxOnly ibbox = do 
-    setSourceRGBA 0 0 0 1
-    setLineWidth 10
-    let BBox (x1,y1) (x2,y2) = imgbbx_bbx ibbox
-    rectangle x1 y1 (x2-x1) (y2-y1)
-    stroke
-    
-
--- | 
-renderRItem_BBoxOnly :: RItem -> Render () 
-renderRItem_BBoxOnly (RItemStroke sbbox) = renderStrkBBx_BBoxOnly sbbox
-renderRItem_BBoxOnly (RItemImage ibbox _) = renderImgBBx_BBoxOnly ibbox
-
-
--- | 
-renderRLayer_BBoxOnly :: RLayer -> Render ()
-renderRLayer_BBoxOnly = mapM_  renderRItem_BBoxOnly . view gitems
-
-  
-  -- mapM_ renderStrkBBx_BBoxOnly . view gstrokes 
-
+  return itm 
 
 
 
-  
--- | render only bounding box of a StrokeBBox      
-renderRPage_BBoxOnly :: RPage -> Render ()  
-renderRPage_BBoxOnly page = do
-    let dim = view gdimension page
-        bkg = view gbackground page 
-        lyrs =  view glayers page
-    -- cairoDrawBackground (toPage id page)
-    renderRBkg_NoPDF (bkg,dim)
-    mapM_ renderRLayer_BBoxOnly lyrs
-
------------
--- NoPDF -- 
------------
-
--- | render background without pdf 
-renderRBkg_NoPDF :: (RBackground,Dimension) -> Render ()
-renderRBkg_NoPDF r@(RBkgSmpl _ _ _,_) = renderRBkg r
-renderRBkg_NoPDF (RBkgPDF _ _ _ _ _,_) = return ()
-
-
 ------------
 -- InBBox --
 ------------
 
 -- | background drawing in bbox 
-renderRBkg_InBBox :: Maybe BBox -> (RBackground,Dimension) -> Render ()
+renderRBkg_InBBox :: Maybe BBox 
+                  -> (RBackground,Dimension) 
+                  -> Render (RBackground,Dimension)
 renderRBkg_InBBox mbbox (b,dim) = do 
     case b of 
       RBkgSmpl _ _ _ -> do 
@@ -310,10 +225,11 @@
         clipBBox mbbox
         renderRBkg_Buf (b,dim)
         resetClip
+    return (b,dim)
 
 
 -- | render RLayer within BBox after hittest items
-renderRLayer_InBBox :: Maybe BBox -> RLayer -> Render () 
+renderRLayer_InBBox :: Maybe BBox -> RLayer -> Render RLayer
 renderRLayer_InBBox mbbox layer = do  
   clipBBox mbbox 
   let hittestbbox = case mbbox of 
@@ -323,6 +239,7 @@
         Just bbox -> (hltHittedByBBox bbox . view gitems) layer
   (mapM_ renderRItem . concatMap unHitted  . getB) hittestbbox
   resetClip
+  return layer 
 
 
 -----------------------
@@ -330,38 +247,34 @@
 -----------------------
 
 -- | Background rendering using buffer
-renderRBkg_Buf :: (RBackground,Dimension) -> Render ()
+renderRBkg_Buf :: (RBackground,Dimension) 
+               -> Render (RBackground,Dimension)
 renderRBkg_Buf (b,dim) = do 
     case b of 
       RBkgSmpl _ _ msfc  -> do  
         case msfc of 
-          Nothing -> renderRBkg (b,dim)
+          Nothing -> renderRBkg (b,dim) >> return ()
           Just sfc -> do 
             setSourceSurface sfc 0 0 
-            -- setOperator OperatorSource
-            -- setAntialias AntialiasNone
             paint 
       RBkgPDF _ _ _ _ msfc -> do 
         case msfc of 
-          Nothing -> renderRBkg (b,dim)
+          Nothing -> renderRBkg (b,dim) >> return ()
           Just sfc -> do 
             setSourceSurface sfc 0 0 
-            -- setOperator OperatorSource
-            -- setAntialias AntialiasNone
             paint 
+    return (b,dim)
 
 -- | 
-renderRLayer_InBBoxBuf :: Maybe BBox -> RLayer -> Render ()
+renderRLayer_InBBoxBuf :: Maybe BBox -> RLayer -> Render RLayer 
 renderRLayer_InBBoxBuf mbbox lyr = do
-  case view gbuffer lyr of 
-    LyBuf (Just sfc) -> do clipBBox mbbox
-                           setSourceSurface sfc 0 0 
-                           -- setOperator OperatorSource
-                           -- setAntialias AntialiasNone
-                           paint 
-                           resetClip 
-    _ -> renderRLayer_InBBox mbbox lyr 
-
+    case view gbuffer lyr of 
+      LyBuf (Just sfc) -> do clipBBox mbbox
+                             setSourceSurface sfc 0 0 
+                             paint 
+                             resetClip 
+      _ -> renderRLayer_InBBox mbbox lyr >> return () 
+    return lyr 
 
 -------------------
 -- update buffer
@@ -407,11 +320,6 @@
   npgs <- evalStateT (mapM cnstrctRPage_StateT pgs) Nothing 
   return . set gtitle ttl . set gpages (fromList npgs) $ emptyGHoodle 
     
-{-  
--- |
-mkAllTPageBBoxMapPDF :: [Page] -> IO [TPageBBoxMapPDF]
-mkAllTPageBBoxMapPDF pgs = evalStateT (mapM mkPagePDF pgs) Nothing 
--}
 
 -- |
 cnstrctRPage_StateT :: Page -> StateT (Maybe Context) IO RPage
@@ -429,18 +337,7 @@
   nitms <- (mapM cnstrctRItem . view items) lyr 
   return (set gitems nitms emptyRLayer)
 
-
-{- -- |   
-mkRLayer :: Layer -> RLayer   
-mkRLayer lyr = let nitms = map mkRItem . view items $ lyr 
-               in set gitems nitms emptyRLayer
-  
--- | 
-mkRItem :: Item -> RItem 
-mkRItem (ItemStroke strk) = RItemStroke (mkStrokeBBox strk)
-mkRItem (ItemImage img) = RItemImage (mkImageBBox img) Nothing 
--}                  
-                  
+                 
 -- |
 cnstrctRBkg_StateT :: Dimension -> Background 
                    -> StateT (Maybe Context) IO RBackground
@@ -452,9 +349,7 @@
         Just _ -> return rbkg
         Nothing -> do 
           sfc <- liftIO $ createImageSurface FormatARGB32 (floor w) (floor h)
-          renderWith sfc $ do 
-            -- cairoDrawBkg dim bkg
-            renderBkg (bkg,dim) 
+          renderWith sfc $ renderBkg (bkg,dim) 
           return rbkg { rbkg_cairosurface = Just sfc}
     RBkgPDF md mf pn _ _ -> do 
 #ifdef POPPLER
diff --git a/src/Graphics/Hoodle/Render/Background.hs b/src/Graphics/Hoodle/Render/Background.hs
--- a/src/Graphics/Hoodle/Render/Background.hs
+++ b/src/Graphics/Hoodle/Render/Background.hs
@@ -156,8 +156,5 @@
     _ -> return ()     
 
 
-
-
--- instance RenderOptionable (BackgroundPDFDrawable,Dimension) where
       
 
diff --git a/src/Graphics/Hoodle/Render/Debug.hs b/src/Graphics/Hoodle/Render/Debug.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Hoodle/Render/Debug.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+-----------------------------------------------------------------------------
+-- |
+-- Module      : Graphics.Hoodle.Render.Debug
+-- Copyright   : (c) 2011, 2012 Ian-Woo Kim
+--
+-- License     : BSD3
+-- Maintainer  : Ian-Woo Kim <ianwookim@gmail.com>
+-- Stability   : experimental
+-- Portability : GHC
+--
+-- collection of rendering routine 
+--
+-----------------------------------------------------------------------------
+
+
+module Graphics.Hoodle.Render.Debug
+(      
+-- * dummy rendering 
+  renderRBkg_Dummy  
+-- * render in bbox using non R-structure 
+, renderBkg_InBBox
+-- * nopdf
+, renderRBkg_NoPDF
+-- * render only bbox (for debug purpose)
+, renderStrkBBx_BBoxOnly
+, renderImgBBx_BBoxOnly
+, renderRItem_BBoxOnly
+, renderRLayer_BBoxOnly
+, renderRPage_BBoxOnly
+-- * render using buf 
+, renderRBkg_Buf
+, renderRLayer_InBBoxBuf
+) where
+
+import           Control.Lens 
+import           Control.Monad.State hiding (mapM,mapM_)
+import           Data.Foldable
+import qualified Data.Map as M
+import           Graphics.Rendering.Cairo
+-- from hoodle-platform 
+import Data.Hoodle.Generic
+import Data.Hoodle.Simple
+import Data.Hoodle.BBox
+import Data.Hoodle.Predefined 
+#ifdef POPPLER
+import qualified Graphics.UI.Gtk.Poppler.Page as PopplerPage
+#endif
+-- from this package
+import Graphics.Hoodle.Render
+import Graphics.Hoodle.Render.Type 
+-- 
+import Prelude hiding (curry,uncurry,mapM,mapM_,concatMap)
+
+----- 
+-- Dummy (for testing) 
+-----
+
+renderRBkg_Dummy :: (RBackground,Dimension) -> Render () 
+renderRBkg_Dummy (_,Dim w h) = do 
+    setSourceRGBA 1 1 1 1
+    rectangle 0 0 w h 
+    fill 
+
+-----------
+-- NoPDF -- 
+-----------
+
+-- | render background without pdf 
+renderRBkg_NoPDF :: (RBackground,Dimension) -> Render ()
+renderRBkg_NoPDF r@(RBkgSmpl _ _ _,_) = renderRBkg r >> return ()
+renderRBkg_NoPDF (RBkgPDF _ _ _ _ _,_) = return ()
+
+--------------
+-- BBoxOnly --
+--------------
+
+-- | render only bounding box of a StrokeBBox      
+renderStrkBBx_BBoxOnly :: StrokeBBox -> Render () 
+renderStrkBBx_BBoxOnly sbbox = do  
+    let s = strkbbx_strk sbbox
+    case M.lookup (stroke_color s) predefined_pencolor of 
+      Just (r,g,b,a) -> setSourceRGBA r g b a
+      Nothing -> setSourceRGBA 0 0 0 1 
+    setSourceRGBA 0 0 0 1
+    setLineWidth (stroke_width s) 
+    let BBox (x1,y1) (x2,y2) = strkbbx_bbx sbbox
+    rectangle x1 y1 (x2-x1) (y2-y1)
+    stroke
+  
+-- |     
+renderImgBBx_BBoxOnly :: ImageBBox -> Render () 
+renderImgBBx_BBoxOnly ibbox = do 
+    setSourceRGBA 0 0 0 1
+    setLineWidth 10
+    let BBox (x1,y1) (x2,y2) = imgbbx_bbx ibbox
+    rectangle x1 y1 (x2-x1) (y2-y1)
+    stroke
+    
+
+-- | 
+renderRItem_BBoxOnly :: RItem -> Render () 
+renderRItem_BBoxOnly (RItemStroke sbbox) = renderStrkBBx_BBoxOnly sbbox
+renderRItem_BBoxOnly (RItemImage ibbox _) = renderImgBBx_BBoxOnly ibbox
+
+
+-- | 
+renderRLayer_BBoxOnly :: RLayer -> Render ()
+renderRLayer_BBoxOnly = mapM_  renderRItem_BBoxOnly . view gitems
+
+
+  
+-- | render only bounding box of a StrokeBBox      
+renderRPage_BBoxOnly :: RPage -> Render ()  
+renderRPage_BBoxOnly page = do
+    let dim = view gdimension page
+        bkg = view gbackground page 
+        lyrs =  view glayers page
+    renderRBkg_NoPDF (bkg,dim)
+    mapM_ renderRLayer_BBoxOnly lyrs
+
+
diff --git a/src/Graphics/Hoodle/Render/Generic.hs b/src/Graphics/Hoodle/Render/Generic.hs
--- a/src/Graphics/Hoodle/Render/Generic.hs
+++ b/src/Graphics/Hoodle/Render/Generic.hs
@@ -14,6 +14,7 @@
 
 module Graphics.Hoodle.Render.Generic where
 
+import Control.Applicative
 import Control.Lens
 import Data.Foldable
 import Graphics.Rendering.Cairo
@@ -23,42 +24,39 @@
 import Data.Hoodle.Simple
 -- from this package 
 import Graphics.Hoodle.Render
+import Graphics.Hoodle.Render.Debug
 import Graphics.Hoodle.Render.Type 
--- import Graphics.Hoodle.Render.Simple
--- import Graphics.Hoodle.Render.BBox
 -- 
 import Prelude hiding (mapM_)
 
+-- | temporary util
+passarg :: (Monad m) => (a -> m ()) -> a -> m a
+passarg f a = f a >> return a
+
 -- | 
 class Renderable a where 
-  cairoRender :: a -> Render ()
+  cairoRender :: a -> Render a
                  
 -- | 
 instance Renderable (Background,Dimension) where
-  cairoRender = renderBkg 
+  cairoRender = passarg renderBkg 
 
 -- | 
 instance Renderable Stroke where 
-  cairoRender = renderStrk 
+  cairoRender = passarg renderStrk 
 
 -- | 
 instance Renderable StrokeBBox where
-  cairoRender = renderStrk . strkbbx_strk
+  cairoRender = passarg (renderStrk . strkbbx_strk)
   
 -- | 
 instance Renderable RLayer where
   cairoRender = renderRLayer_InBBox Nothing 
   
-{-  
 -- | 
-instance Renderable RPage where
-  cairoRender = renderRPage 
--}
-
--- | 
 class RenderOptionable a where   
   type RenderOption a :: *
-  cairoRenderOption :: RenderOption a -> a -> Render ()
+  cairoRenderOption :: RenderOption a -> a -> Render a
 
 -- | 
 instance RenderOptionable (Background,Dimension) where
@@ -77,14 +75,14 @@
 instance RenderOptionable StrokeBBox where
   type RenderOption StrokeBBox = StrokeBBoxOption
   cairoRenderOption DrawFull = cairoRender 
-  cairoRenderOption DrawBoxOnly = renderStrkBBx_BBoxOnly
+  cairoRenderOption DrawBoxOnly = passarg renderStrkBBx_BBoxOnly
   
 -- | 
 instance RenderOptionable (RBackground,Dimension) where 
   type RenderOption (RBackground,Dimension) = RBkgOpt 
   -- cairoRenderOption :: RBkgOpt -> (RBackground,Dimension) -> Render ()
   cairoRenderOption RBkgDrawPDF = renderRBkg
-  cairoRenderOption RBkgDrawWhite = renderRBkg_Dummy
+  cairoRenderOption RBkgDrawWhite = passarg renderRBkg_Dummy
   cairoRenderOption RBkgDrawBuffer = renderRBkg_Buf 
   cairoRenderOption (RBkgDrawPDFInBBox mbbox) = renderRBkg_InBBox mbbox 
 
@@ -92,14 +90,13 @@
 instance RenderOptionable RLayer where
   type RenderOption RLayer = StrokeBBoxOption 
   cairoRenderOption DrawFull = cairoRender
-  cairoRenderOption DrawBoxOnly = renderRLayer_BBoxOnly 
+  cairoRenderOption DrawBoxOnly = passarg renderRLayer_BBoxOnly 
 
 -- | 
 instance RenderOptionable (InBBox RLayer) where
   type RenderOption (InBBox RLayer) = InBBoxOption
-  -- cairoRenderOption :: RLyrOpt -> RLayer -> Render ()  
   cairoRenderOption (InBBoxOption mbbox) (InBBox lyr) = 
-    renderRLayer_InBBoxBuf mbbox lyr
+    InBBox <$> renderRLayer_InBBoxBuf mbbox lyr
     
 -- |
 cairoOptionPage :: ( RenderOptionable (b,Dimension)
@@ -107,10 +104,11 @@
                    , Foldable s) => 
                    (RenderOption (b,Dimension), RenderOption a) 
                    -> GPage b s a 
-                   -> Render ()
+                   -> Render (GPage b s a)
 cairoOptionPage (optb,opta) p = do 
     cairoRenderOption optb (view gbackground p, view gdimension p)
     mapM_ (cairoRenderOption opta) (view glayers p)
+    return p 
   
 -- | 
 instance ( RenderOptionable (b,Dimension)
@@ -120,62 +118,15 @@
   type RenderOption (GPage b s a) = (RenderOption (b,Dimension), RenderOption a)
   cairoRenderOption = cairoOptionPage
             
-{-
 -- | 
-instance RenderOptionable (InBBox RLayer) where
-  type RenderOption (InBBox RLayer) = InBBoxOption 
-  cairoRenderOption (InBBoxOption mbbox) (InBBox layer) 
-    = renderRLayer_InBBox mbbox layer 
--}
-
--- | 
 instance RenderOptionable (InBBox RPage) where
   type RenderOption (InBBox RPage) = InBBoxOption 
   cairoRenderOption (InBBoxOption mbbox) (InBBox page) = do 
-    cairoRenderOption (RBkgDrawPDFInBBox mbbox) (view gbackground page, view gdimension page) 
+    let mbboxtemp = mbbox >>= \bbox -> return (inflate bbox 2.0) -- this is due to a thin unexpected grey margin. 
+    cairoRenderOption (RBkgDrawPDFInBBox mbboxtemp) (view gbackground page, view gdimension page) 
     mapM_ (renderRLayer_InBBox mbbox) . view glayers $ page 
-
-
-
-{-
-instance Renderable (BackgroundPDFDrawable,Dimension) where
-  cairoRender = cairoRenderBackgroundPDFDrawable
--}
-
-{-
--- |   
-cairoLayer :: (Renderable a, Foldable s) => GLayer buf s a -> Render ()
-cairoLayer = mapM_ cairoRender . gstrokes 
-
--- | 
-instance (Renderable a, Foldable s) => Renderable (GLayer s a) where
-  cairoRender = cairoLayer 
-
--- | 
-cairoPage :: (Renderable (b,Dimension), Renderable a, Foldable s) =>  
-             GPage b s a -> Render ()
-cairoPage p = do 
-  cairoRender (gbackground p,gdimension p)
-  mapM_ cairoRender (glayers p)
-
--- | 
-instance (Renderable (b,Dimension), Renderable a, Foldable s) 
-         => Renderable (GPage b s a) where
-  cairoRender = cairoPage 
--}
+    return (InBBox page) 
 
 
 
-{-
--- | 
-cairoOptionLayer :: (RenderOptionable a, Foldable s) => 
-                    RenderOption a -> GLayer s a -> Render () 
-cairoOptionLayer opt = mapM_ (cairoRenderOption opt) . gstrokes 
-
--- | 
-instance (RenderOptionable a, Foldable s) => 
-         RenderOptionable (GLayer s a) where
-  type RenderOption (GLayer s a) = RenderOption a
-  cairoRenderOption = cairoOptionLayer 
--}
 
diff --git a/src/Graphics/Hoodle/Render/Util/HitTest.hs b/src/Graphics/Hoodle/Render/Util/HitTest.hs
--- a/src/Graphics/Hoodle/Render/Util/HitTest.hs
+++ b/src/Graphics/Hoodle/Render/Util/HitTest.hs
@@ -70,13 +70,25 @@
 -- | Do two bounding boxes intersect with each other?
 --   previously, hitTestBBoxBBox
 do2BBoxIntersect :: BBox -> BBox -> Bool  
-do2BBoxIntersect b1@(BBox (ulx1,uly1) (lrx1,lry1)) b2@(BBox (ulx2,uly2) (lrx2,lry2))
-  = isPointInBBox b2 (ulx1,uly1)
+do2BBoxIntersect b1@(BBox (ulx1,uly1) (lrx1,lry1)) b2@(BBox (ulx2,uly2) (lrx2,lry2)) = p1 && p2
+  where p1 =    ulx1 <= ulx2 && ulx2 <= lrx1 
+             || ulx1 <= lrx2 && lrx2 <= lrx1
+             || ulx2 <= ulx1 && ulx1 <= lrx2
+             || ulx2 <= lrx1 && lrx1 <= lrx2
+        p2 =    uly1 <= uly2 && uly2 <= lry1 
+             || uly1 <= lry2 && lry2 <= lry1 
+             || uly2 <= uly1 && uly1 <= lry2 
+             || uly2 <= lry1 && lry1 <= lry2
+  
+  
+  {-   isPointInBBox b2 (ulx1,uly1)
     || isPointInBBox b2 (lrx1,lry1)
     || isPointInBBox b2 (lrx1,uly1)
     || isPointInBBox b2 (ulx1,lry1)
-    || isPointInBBox b1 (lrx2,lry2)
     || isPointInBBox b1 (ulx2,uly2)
+    || isPointInBBox b1 (lrx2,lry2)
+    || isPointInBBox b1 (lrx2,uly2)
+    || isPointInBBox b1 (ulx2,lry2) -} 
 
 -- | is the second bbox inside the first bbox?
 --   previously, hitTestInsideBBox
