diff --git a/lib/Rainbox/Core.hs b/lib/Rainbox/Core.hs
--- a/lib/Rainbox/Core.hs
+++ b/lib/Rainbox/Core.hs
@@ -11,17 +11,18 @@
 -- if their inputs don't respect particular invariants.
 module Rainbox.Core where
 
-import Rainbow
-import Control.Monad (join)
-import Control.Lens hiding (below)
-import Rainbow.Types (Chunk(..))
-import Data.Sequence (Seq, ViewL(..), viewl)
-import qualified Data.Sequence as Seq
+import           Control.Lens ( (|>) , (&) , makeLenses , (<|))
+import           Control.Monad (join)
 import qualified Data.Foldable as F
-import qualified Data.Traversable as T
-import Data.Text (Text)
-import qualified Data.Text as X
 import qualified Data.Map as M
+import           Data.Monoid ((<>))
+import           Data.Sequence (Seq, ViewL (EmptyL, (:<)), viewl)
+import qualified Data.Sequence as Seq
+import           Data.Text (Text)
+import qualified Data.Text as X
+import qualified Data.Traversable as T
+import           Rainbow ( Chunk , Radiant , chunk , back)
+import           Rainbow.Types (Chunk (_yarn))
 
 -- # Alignment
 
@@ -110,7 +111,7 @@
   width (Width a) = max 0 a
 
 instance HasWidth (Chunk Text) where
-  width (Chunk _ t) = X.length t
+  width ck = X.length . _yarn $ ck
 
 instance (HasWidth a, HasWidth b) => HasWidth (Either a b) where
   width = either width width
diff --git a/lib/Rainbox/Tutorial.hs b/lib/Rainbox/Tutorial.hs
--- a/lib/Rainbox/Tutorial.hs
+++ b/lib/Rainbox/Tutorial.hs
@@ -326,101 +326,102 @@
 -}
 module Rainbox.Tutorial where
 
+import Control.Lens ((&))
 import Data.Foldable (toList)
-import Data.Monoid
+import Data.Monoid ((<>))
 import Data.Sequence (Seq)
 import qualified Data.Sequence as Seq
 import Data.Text (Text)
 import qualified Data.Text as X
-import Rainbow
-import Rainbox
+import qualified Rainbow
+import qualified Rainbox
 
 -- | Create a 'Box' for the given text.  The default foreground and
 -- background colors of the terminal are used for the 'Text'; the
 -- given background is used as the background color for any added
 -- padding.
-textBox :: Radiant -> Text -> Box a
-textBox r = fromChunk center r . chunk
+textBox :: Rainbow.Radiant -> Text -> Rainbox.Box a
+textBox r = Rainbox.fromChunk Rainbox.center r . Rainbow.chunk
 
 -- | Centers the given 'Box' within a larger 'Box' that has the given
 -- height and width and background color.  The larger 'Box' has the
 -- given 'Alignment'.
 within
-  :: Orientation a
-  => Alignment a
+  :: Rainbox.Orientation a
+  => Rainbox.Alignment a
   -> Int
   -- ^ Number of rows
   -> Int
   -- ^ Number of columns
-  -> Radiant
+  -> Rainbow.Radiant
   -- ^ Background color
-  -> Box a
-  -> Box a
+  -> Rainbox.Box a
+  -> Rainbox.Box a
 within a r c b
-  = wrap a b
-  . mappend (spreader center r)
-  . wrap centerH b
-  . mappend (spreader center c)
-  . wrap centerV b
+  = Rainbox.wrap a b
+  . mappend (Rainbox.spreader Rainbox.center r)
+  . Rainbox.wrap Rainbox.centerH b
+  . mappend (Rainbox.spreader Rainbox.center c)
+  . Rainbox.wrap Rainbox.centerV b
 
 -- | Puts the given text in the center of a box.  The resulting box is
 -- center aligned.
 textWithin
-  :: Orientation a
-  => Alignment a
+  :: Rainbox.Orientation a
+  => Rainbox.Alignment a
   -> Int
   -- ^ Number of rows
   -> Int
   -- ^ Number of columns
-  -> Radiant
+  -> Rainbow.Radiant
   -- ^ Background color for smaller box
-  -> Radiant
+  -> Rainbow.Radiant
   -- ^ Background color for larger box
   -> Text
-  -> Box a
-textWithin a r c bs bl = wrap a bl . within a r c bs . textBox bs
+  -> Rainbox.Box a
+textWithin a r c bs bl = Rainbox.wrap a bl . within a r c bs . textBox bs
 
-box1 :: Box Vertical
+box1 :: Rainbox.Box Rainbox.Vertical
 box1 = mconcat
-  [ textWithin left   4 6  blue      green   "v1"
-  , textWithin left   4 15 red       magenta "v2"
-  , textWithin right  6 10 yellow    blue    "v3"
-  , textWithin left   3 12 green     red     "v4"
-  , textWithin center 4 11 magenta   blue    "v5"
+  [ textWithin Rainbox.left   4 6  Rainbow.blue      Rainbow.green   "v1"
+  , textWithin Rainbox.left   4 15 Rainbow.red       Rainbow.magenta "v2"
+  , textWithin Rainbox.right  6 10 Rainbow.yellow    Rainbow.blue    "v3"
+  , textWithin Rainbox.left   3 12 Rainbow.green     Rainbow.red     "v4"
+  , textWithin Rainbox.center 4 11 Rainbow.magenta   Rainbow.blue    "v5"
   ]
 
 renderBox1 :: IO ()
-renderBox1 = mapM_ putChunk . toList . render $ box1
+renderBox1 = mapM_ Rainbow.putChunk . toList . Rainbox.render $ box1
 
-box2 :: Box Horizontal
+box2 :: Rainbox.Box Rainbox.Horizontal
 box2 = mconcat
-  [ textWithin bottom 4 6  magenta green "h1"
-  , textWithin top    5 12 blue    yellow "h2"
+  [ textWithin Rainbox.bottom 4 6  Rainbow.magenta Rainbow.green "h1"
+  , textWithin Rainbox.top    5 12 Rainbow.blue    Rainbow.yellow "h2"
   ]
 
 renderBox2 :: IO ()
-renderBox2 = mapM_ putChunk . toList . render $ box2
+renderBox2 = mapM_ Rainbow.putChunk . toList . Rainbox.render $ box2
 
-box3 :: Box Horizontal
+box3 :: Rainbox.Box Rainbox.Horizontal
 box3 = mconcat
-  [ wrap top yellow box1
+  [ Rainbox.wrap Rainbox.top Rainbow.yellow box1
   , box2
   ]
 
 renderBox3 :: IO ()
-renderBox3 = mapM_ putChunk . toList . render $ box3
+renderBox3 = mapM_ Rainbow.putChunk . toList . Rainbox.render $ box3
 
-box4 :: Box Horizontal
-box4 = box2 <> spacer cyan 3
+box4 :: Rainbox.Box Rainbox.Horizontal
+box4 = box2 <> Rainbox.spacer Rainbow.cyan 3
 
 renderBox4 :: IO ()
-renderBox4 = mapM_ putChunk . toList . render $ box4
+renderBox4 = mapM_ Rainbow.putChunk . toList . Rainbox.render $ box4
 
-box5 :: Box Horizontal
-box5 = box4 <> spreader center 12
+box5 :: Rainbox.Box Rainbox.Horizontal
+box5 = box4 <> Rainbox.spreader Rainbox.center 12
 
 renderBox5 :: IO ()
-renderBox5 = mapM_ putChunk . toList . render $ box5
+renderBox5 = mapM_ Rainbow.putChunk . toList . Rainbox.render $ box5
 
 -- Sample code for 'tableByRows'
 --
@@ -443,42 +444,44 @@
   , underground :: Bool
   }
 
-nameCell :: Radiant -> Text -> Cell
-nameCell bk nm
-  = Cell (Seq.singleton . Seq.singleton $ (chunk nm & back bk))
-         top left bk
+nameCell :: Rainbow.Radiant -> Text -> Rainbox.Cell
+nameCell bk nm = Rainbox.Cell cks Rainbox.top Rainbox.left bk
+  where
+    cks = Seq.singleton . Seq.singleton $ (Rainbow.chunk nm & Rainbow.back bk)
 
-linesCell :: Radiant -> [Line] -> Cell
-linesCell bk lns = Cell (Seq.fromList . fmap (lineRow bk) $ lns)
-                        top right bk
+linesCell :: Rainbow.Radiant -> [Line] -> Rainbox.Cell
+linesCell bk lns = Rainbox.Cell cks Rainbox.top Rainbox.right bk
+  where
+    cks = Seq.fromList . fmap (lineRow bk) $ lns
 
-lineRow :: Radiant -> Line -> Seq (Chunk Text)
+lineRow :: Rainbow.Radiant -> Line -> Seq (Rainbow.Chunk Text)
 lineRow bk li = Seq.singleton ck
   where
-    ck = chunk (X.pack . show $ li) & fore clr & back bk
+    ck = Rainbow.chunk (X.pack . show $ li) & Rainbow.fore clr & Rainbow.back bk
     clr = case li of
-      Red -> red
-      Blue -> blue
-      Orange -> yellow <> color256 220
-      Green -> green
-      Yellow -> yellow
-      Silver -> white <> grey
+      Red -> Rainbow.red
+      Blue -> Rainbow.blue
+      Orange -> Rainbow.yellow <> Rainbow.color256 220
+      Green -> Rainbow.green
+      Yellow -> Rainbow.yellow
+      Silver -> Rainbow.white <> Rainbow.grey
 
 
-addressCell :: Radiant -> [Text] -> Cell
-addressCell bk lns = Cell (Seq.fromList . fmap addrRow $ lns) top center bk
+addressCell :: Rainbow.Radiant -> [Text] -> Rainbox.Cell
+addressCell bk lns = Rainbox.Cell cks Rainbox.top Rainbox.center bk
   where
-    addrRow txt = Seq.singleton $ chunk txt & back bk
+    cks = Seq.fromList . fmap addrRow $ lns
+    addrRow txt = Seq.singleton $ Rainbow.chunk txt & Rainbow.back bk
 
-undergroundCell :: Radiant -> Bool -> Cell
+undergroundCell :: Rainbow.Radiant -> Bool -> Rainbox.Cell
 undergroundCell bk bl
-  = Cell (Seq.singleton . Seq.singleton $ ck) top left bk
+  = Rainbox.Cell (Seq.singleton . Seq.singleton $ ck) Rainbox.top Rainbox.left bk
   where
-    ck = (chunk $ if bl then "Yes" else "No") & back bk
+    ck = (Rainbow.chunk $ if bl then "Yes" else "No") & Rainbow.back bk
 
 -- | Converts a 'Station' to a list of 'Cell'.
 
-stationCells :: Radiant -> Station -> [Cell]
+stationCells :: Rainbow.Radiant -> Station -> [Rainbox.Cell]
 stationCells b st =
   [ nameCell b . name $ st
   , linesCell b . metroLines $ st
@@ -486,21 +489,22 @@
   , undergroundCell b . underground $ st
   ]
 
-stationTable :: Box Vertical
+stationTable :: Rainbox.Box Rainbox.Vertical
 stationTable
-  = tableByRows
+  = Rainbox.tableByRows
   . Seq.fromList
   . zipWith stationRow (cycle [coloredBack, mempty])
   $ stations
   where
-    coloredBack = mempty <> color256 195
+    coloredBack = mempty <> Rainbow.color256 195
     stationRow bk
-      = intersperse (separator bk 1)
+      = Rainbox.intersperse (Rainbox.separator bk 1)
       . Seq.fromList
       . stationCells bk
 
 renderStationTable :: IO ()
-renderStationTable = mapM_ putChunk . toList . render $ stationTable
+renderStationTable
+  = mapM_ Rainbow.putChunk . toList . Rainbox.render $ stationTable
 
 stations :: [Station]
 stations =
diff --git a/rainbox.cabal b/rainbox.cabal
--- a/rainbox.cabal
+++ b/rainbox.cabal
@@ -3,11 +3,11 @@
 -- http://www.github.com/massysett/cartel
 --
 -- Script name used to generate: genCabal.hs
--- Generated on: 2015-07-16 06:59:03.159503 EDT
+-- Generated on: 2015-09-23 18:38:31.435056 EDT
 -- Cartel library version: 0.14.2.6
 
 name: rainbox
-version: 0.18.0.2
+version: 0.18.0.4
 cabal-version: >= 1.18
 license: BSD3
 license-file: LICENSE
@@ -27,6 +27,8 @@
   .
   <http://www.github.com/massysett/rainbox>
 category: Text
+tested-with:
+  GHC == 7.10.2
 extra-source-files:
   README.md
   changelog
