diff --git a/core-text.cabal b/core-text.cabal
--- a/core-text.cabal
+++ b/core-text.cabal
@@ -1,57 +1,64 @@
 cabal-version: 1.12
-name: core-text
-version: 0.2.2.4
-license: BSD3
-license-file: LICENSE
-copyright: © 2018-2019 Operational Dynamics Consulting Pty Ltd, and Others
-maintainer: Andrew Cowie <andrew@operationaldynamics.com>
-author: Andrew Cowie <andrew@operationaldynamics.com>
-stability: experimental
-tested-with: ghc ==8.6.5
-homepage: https://github.com/oprdyn/unbeliever#readme
-bug-reports: https://github.com/oprdyn/unbeliever/issues
-synopsis: A rope type based on a finger tree over UTF-8 fragments
-description:
-    A rope data type for text, built as a finger tree over UTF-8 text
-    fragments. The package also includes utiltiy functions for breaking and
-    re-wrapping lines, conveniences for pretty printing and colourizing
-    terminal output, and a simple mechanism for multi-line Rope literals.
-    .
-    The main @Rope@ type and its usage are described at "Core.Text.Rope" in
-    this package.
-    .
-    This is part of a library intended to ease interoperability and assist in
-    building command-line programs, both tools and longer-running daemons.
-    A list of features and some background to the library's design is contained
-    in the
-    <https://github.com/oprdyn/unbeliever/blob/master/README.markdown README>
-    on GitHub.
-category: System
-build-type: Simple
 
+-- This file has been generated from package.yaml by hpack version 0.31.2.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: 113b0b96cebb913a06d4c3a2344ce4a18fd0e22758bcdef53ce23081b6f5f355
+
+name:           core-text
+version:        0.2.2.6
+synopsis:       A rope type based on a finger tree over UTF-8 fragments
+description:    A rope data type for text, built as a finger tree over UTF-8 text
+                fragments. The package also includes utiltiy functions for breaking and
+                re-wrapping lines, conveniences for pretty printing and colourizing
+                terminal output, and a simple mechanism for multi-line Rope literals.
+                .
+                The main @Rope@ type and its usage are described at "Core.Text.Rope" in
+                this package.
+                .
+                This is part of a library intended to ease interoperability and assist in
+                building command-line programs, both tools and longer-running daemons.
+                A list of features and some background to the library's design is contained
+                in the
+                <https://github.com/oprdyn/unbeliever/blob/master/README.markdown README>
+                on GitHub.
+category:       System
+stability:      experimental
+homepage:       https://github.com/oprdyn/unbeliever#readme
+bug-reports:    https://github.com/oprdyn/unbeliever/issues
+author:         Andrew Cowie <andrew@operationaldynamics.com>
+maintainer:     Andrew Cowie <andrew@operationaldynamics.com>
+copyright:      © 2018-2019 Operational Dynamics Consulting Pty Ltd, and Others
+license:        BSD3
+license-file:   LICENSE
+tested-with:    GHC == 8.6.5
+build-type:     Simple
+
 source-repository head
-    type: git
-    location: https://github.com/oprdyn/unbeliever
+  type: git
+  location: https://github.com/oprdyn/unbeliever
 
 library
-    exposed-modules:
-        Core.Text
-        Core.Text.Bytes
-        Core.Text.Rope
-        Core.Text.Utilities
-    hs-source-dirs: lib
-    other-modules:
-        Core.Text.Breaking
-    default-language: Haskell2010
-    ghc-options: -Wall -Wwarn -fwarn-tabs
-    build-depends:
-        base >=4.11 && <5,
-        bytestring >=0.10.8.2 && <0.11,
-        deepseq >=1.4.4.0 && <1.5,
-        fingertree >=0.1.4.2 && <0.2,
-        hashable >=1.2 && <1.4,
-        prettyprinter >=1.2.1.1 && <1.6,
-        prettyprinter-ansi-terminal >=1.1.1.2 && <1.2,
-        template-haskell >=2.14 && <3,
-        text >=1.2.3.1 && <1.3,
-        text-short >=0.1.3 && <0.2
+  exposed-modules:
+      Core.Text
+      Core.Text.Bytes
+      Core.Text.Rope
+      Core.Text.Utilities
+  other-modules:
+      Core.Text.Breaking
+  hs-source-dirs:
+      lib
+  ghc-options: -Wall -Wwarn -fwarn-tabs
+  build-depends:
+      base >=4.11 && <5
+    , bytestring
+    , deepseq
+    , fingertree
+    , hashable >=1.2 && <1.4
+    , prettyprinter >=1.2.1.1 && <1.6
+    , prettyprinter-ansi-terminal
+    , template-haskell >=2.14 && <3
+    , text
+    , text-short
+  default-language: Haskell2010
diff --git a/lib/Core/Text/Rope.hs b/lib/Core/Text/Rope.hs
--- a/lib/Core/Text/Rope.hs
+++ b/lib/Core/Text/Rope.hs
@@ -99,7 +99,7 @@
 import qualified Data.FingerTree as F (FingerTree, Measured(..), empty
     , singleton, (><), (<|), (|>), search, SearchResult(..), null
     , viewl, ViewL(..))
-import Data.Foldable (foldr, foldr', foldMap, toList, any)
+import Data.Foldable (foldr, foldr', foldl', foldMap, toList, any)
 import Data.Hashable (Hashable, hashWithSalt)
 import Data.String (IsString(..))
 import qualified Data.Text as T (Text)
@@ -319,13 +319,16 @@
 --
 -- FingerTree Width (Hashed S.ShortText)
 --
--- at the cost of endless unwrapping.
+-- at the cost of endless unwrapping. Another alternative would be to cache
+-- hash values in the monoid, changing Width from being a wrapper of Int to
+-- a record type with width, hash, and perhaps newlines within the
+-- corresponding tree.
 --
 instance Hashable Rope where
-    hashWithSalt salt (Rope x) = foldr f salt x
+    hashWithSalt salt (Rope x) = foldl' f salt x
       where
-        f :: S.ShortText -> Int -> Int
-        f piece num = hashWithSalt num piece
+        f :: Int -> S.ShortText  -> Int
+        f num piece = hashWithSalt num piece
 
 {-|
 Machinery to interpret a type as containing valid Unicode that can be
diff --git a/lib/Core/Text/Utilities.hs b/lib/Core/Text/Utilities.hs
--- a/lib/Core/Text/Utilities.hs
+++ b/lib/Core/Text/Utilities.hs
@@ -108,7 +108,7 @@
 
 instance (Render a) => Render [a] where
     type Token [a] = Token a
-    colourize = const mempty
+    colourize = colourize @a
     intoDocA = mconcat . fmap intoDocA
 
 instance Render T.Text where
