diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,11 +1,18 @@
 
-# Changelog for ELynx
+# Revision history for ELynx
 
 
 ## Unreleased changes
 
+-   Improve rooting functions.
+-   Improve `Topology` data type (but still a lot to do).
+-   Various additions to the documentation.
+-   Rename `Measurable` to `HasLength`, `Supported` to `HasSupport`, and `Named`
+    to `HasLength`.
+-   Cabal and stack file changes.
 
-## Version 0.5.0
+
+## Version 0.5.0.1
 
 -   `modLen`, `modSup`.
 -   Newtype wrappers for branch length, branch support, and node name. Those data
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
 
 # The ELynx Suite
 
-Version: 0.5.0.
+Version: 0.5.0.1.
 Reproducible evolution made easy.
 
 <p align="center"><img src="https://travis-ci.org/dschrempf/elynx.svg?branch=master"/></p>
@@ -19,18 +19,20 @@
 
 The library packages are:
 
--   **elynx-nexus:** Nexus file support.
--   **elynx-markov:** Simulate multi sequence alignments along phylogenetic trees.
--   **elynx-seq:** Handle evolutionary sequences and multi sequence alignments.
--   **elynx-tools:** Tools for the provided executables.
--   **elynx-tree:** Handle phylogenetic trees.
+-   **[elynx-nexus](https://hackage.haskell.org/package/elynx-nexus):** Nexus file support.
+-   **[elynx-markov](https://hackage.haskell.org/package/elynx-markov):** Simulate multi sequence alignments along phylogenetic trees.
+-   **[elynx-seq](https://hackage.haskell.org/package/elynx-seq):** Handle evolutionary sequences and multi sequence alignments.
+-   **[elynx-tools](https://hackage.haskell.org/package/elynx-tools):** Tools for the provided executables.
+-   **[elynx-tree](https://hackage.haskell.org/package/elynx-tree):** Handle phylogenetic trees.
 
 The executables are:
 
--   **slynx:** Analyze, modify, and simulate evolutionary sequences.
--   **tlynx:** Analyze, modify, and simulate phylogenetic trees.
--   **elynx:** Validate and redo past analyses.
+-   **[slynx](https://hackage.haskell.org/package/slynx):** Analyze, modify, and simulate evolutionary sequences.
+-   **[tlynx](https://hackage.haskell.org/package/tlynx):** Analyze, modify, and simulate phylogenetic trees.
+-   **[elynx](https://hackage.haskell.org/package/elynx):** Validate and redo past analyses.
 
+Documentation is available on [Hackage](https://hackage.haskell.org/) (use direct links above).
+
 **ELynx is actively developed. We happily receive comments, ideas, feature
 requests, and pull requests!**
 
@@ -65,34 +67,15 @@
     [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) environment variable. Then, they can be used directly.
 
 
-# Documentation
-
-Documentation is available on [Hackage](https://hackage.haskell.org/).
-
-Libraries:
-
--   [elynx-nexus](https://hackage.haskell.org/package/elynx-nexus)
--   [elynx-markov](https://hackage.haskell.org/package/elynx-markov)
--   [elynx-seq](https://hackage.haskell.org/package/elynx-seq)
--   [elynx-tools](https://hackage.haskell.org/package/elynx-tools)
--   [elynx-tree](https://hackage.haskell.org/package/elynx-tree)
-
-Executables:
-
--   [elynx](https://hackage.haskell.org/package/elynx)
--   [slynx](https://hackage.haskell.org/package/slynx)
--   [tlynx](https://hackage.haskell.org/package/tlynx)
-
-
 # SLynx
 
 Handle evolutionary sequences.
 
     slynx --help | head -n -16
 
-    ELynx Suite version 0.5.0.
+    ELynx Suite version 0.5.0.1.
     Developed by Dominik Schrempf.
-    Compiled on November 10, 2020, at 14:29 pm, UTC.
+    Compiled on December 18, 2020, at 10:14 am, UTC.
     
     Usage: slynx [-v|--verbosity VALUE] [-o|--output-file-basename NAME] 
                  [-f|--force] [--no-elynx-file] COMMAND
@@ -137,9 +120,9 @@
 
     slynx concatenate --help
 
-    ELynx Suite version 0.5.0.
+    ELynx Suite version 0.5.0.1.
     Developed by Dominik Schrempf.
-    Compiled on November 10, 2020, at 14:29 pm, UTC.
+    Compiled on December 18, 2020, at 10:14 am, UTC.
     
     Usage: slynx concatenate (-a|--alphabet NAME) INPUT-FILE
       Concatenate sequences found in input files.
@@ -158,9 +141,9 @@
 
     slynx examine --help
 
-    ELynx Suite version 0.5.0.
+    ELynx Suite version 0.5.0.1.
     Developed by Dominik Schrempf.
-    Compiled on November 10, 2020, at 14:29 pm, UTC.
+    Compiled on December 18, 2020, at 10:14 am, UTC.
     
     Usage: slynx examine (-a|--alphabet NAME) INPUT-FILE [--per-site]
       Examine sequences. If data is a multi sequence alignment, additionally analyze columns.
@@ -180,9 +163,9 @@
 
     slynx filter-rows --help
 
-    ELynx Suite version 0.5.0.
+    ELynx Suite version 0.5.0.1.
     Developed by Dominik Schrempf.
-    Compiled on November 10, 2020, at 14:29 pm, UTC.
+    Compiled on December 18, 2020, at 10:14 am, UTC.
     
     Usage: slynx filter-rows (-a|--alphabet NAME) INPUT-FILE [--longer-than LENGTH] 
                              [--shorter-than LENGTH] [--standard-characters]
@@ -203,9 +186,9 @@
 
     slynx filter-columns --help
 
-    ELynx Suite version 0.5.0.
+    ELynx Suite version 0.5.0.1.
     Developed by Dominik Schrempf.
-    Compiled on November 10, 2020, at 14:29 pm, UTC.
+    Compiled on December 18, 2020, at 10:14 am, UTC.
     
     Usage: slynx filter-columns (-a|--alphabet NAME) INPUT-FILE 
                                 [--standard-chars DOUBLE]
@@ -227,9 +210,9 @@
 
     slynx simulate --help
 
-    ELynx Suite version 0.5.0.
+    ELynx Suite version 0.5.0.1.
     Developed by Dominik Schrempf.
-    Compiled on November 10, 2020, at 14:29 pm, UTC.
+    Compiled on December 18, 2020, at 10:14 am, UTC.
     
     Usage: slynx simulate (-t|--tree-file Name) [-s|--substitution-model MODEL] 
                           [-m|--mixture-model MODEL] [-e|--edm-file NAME] 
@@ -306,9 +289,9 @@
 
     slynx sub-sample --help
 
-    ELynx Suite version 0.5.0.
+    ELynx Suite version 0.5.0.1.
     Developed by Dominik Schrempf.
-    Compiled on November 10, 2020, at 14:29 pm, UTC.
+    Compiled on December 18, 2020, at 10:14 am, UTC.
     
     Usage: slynx sub-sample (-a|--alphabet NAME) INPUT-FILE
                             (-n|--number-of-sites INT)
@@ -336,9 +319,9 @@
 
     slynx translate --help
 
-    ELynx Suite version 0.5.0.
+    ELynx Suite version 0.5.0.1.
     Developed by Dominik Schrempf.
-    Compiled on November 10, 2020, at 14:29 pm, UTC.
+    Compiled on December 18, 2020, at 10:14 am, UTC.
     
     Usage: slynx translate (-a|--alphabet NAME) INPUT-FILE (-r|--reading-frame INT)
                            (-u|--universal-code CODE)
@@ -361,9 +344,9 @@
 
     tlynx --help | head -n -16
 
-    ELynx Suite version 0.5.0.
+    ELynx Suite version 0.5.0.1.
     Developed by Dominik Schrempf.
-    Compiled on November 10, 2020, at 14:29 pm, UTC.
+    Compiled on December 18, 2020, at 10:14 am, UTC.
     
     Usage: tlynx [-v|--verbosity VALUE] [-o|--output-file-basename NAME] 
                  [-f|--force] [--no-elynx-file] COMMAND
@@ -401,9 +384,9 @@
 
     tlynx compare --help
 
-    ELynx Suite version 0.5.0.
+    ELynx Suite version 0.5.0.1.
     Developed by Dominik Schrempf.
-    Compiled on November 10, 2020, at 14:29 pm, UTC.
+    Compiled on December 18, 2020, at 10:14 am, UTC.
     
     Usage: tlynx compare [-n|--normalize] [-b|--bipartitions] [-t|--intersect] 
                          [-f|--newick-format FORMAT] NAMES
@@ -430,9 +413,9 @@
 
     tlynx examine --help
 
-    ELynx Suite version 0.5.0.
+    ELynx Suite version 0.5.0.1.
     Developed by Dominik Schrempf.
-    Compiled on November 10, 2020, at 14:29 pm, UTC.
+    Compiled on December 18, 2020, at 10:14 am, UTC.
     
     Usage: tlynx examine INPUT-FILE [-f|--newick-format FORMAT]
       Compute summary statistics of phylogenetic trees.
@@ -454,9 +437,9 @@
 
     tlynx simulate --help
 
-    ELynx Suite version 0.5.0.
+    ELynx Suite version 0.5.0.1.
     Developed by Dominik Schrempf.
-    Compiled on November 10, 2020, at 14:29 pm, UTC.
+    Compiled on December 18, 2020, at 10:14 am, UTC.
     
     Usage: tlynx simulate (-t|--nTrees INT) (-n|--nLeaves INT) PROCESS 
                           [-u|--sub-sample DOUBLE] [-s|--summary-statistics] 
@@ -491,9 +474,9 @@
 
     elynx --help | head -n -16
 
-    ELynx Suite version 0.5.0.
+    ELynx Suite version 0.5.0.1.
     Developed by Dominik Schrempf.
-    Compiled on November 10, 2020, at 14:29 pm, UTC.
+    Compiled on December 18, 2020, at 10:14 am, UTC.
     
     Usage: elynx COMMAND
       Validate and redo past ELynx analyses
diff --git a/src/TLynx/Examine/Examine.hs b/src/TLynx/Examine/Examine.hs
--- a/src/TLynx/Examine/Examine.hs
+++ b/src/TLynx/Examine/Examine.hs
@@ -44,7 +44,7 @@
     v = BL.pack val
 
 -- | Examine branches of a tree.
-summarizeLengths :: Measurable e => Tree e a -> BL.ByteString
+summarizeLengths :: HasLength e => Tree e a -> BL.ByteString
 summarizeLengths t =
   BL.intercalate
     "\n"
@@ -64,7 +64,7 @@
   nf <- argsNewickFormat . local <$> ask
   liftIO $ parseTrees nf fp
 
-examineTree :: Named a => Handle -> Tree Phylo a -> IO ()
+examineTree :: HasName a => Handle -> Tree Phylo a -> IO ()
 examineTree h t = do
   hPutStrLn h $ "Number of leaves: " ++ show (length lvs)
   let l = phyloToLengthTree t
diff --git a/src/TLynx/Parsers.hs b/src/TLynx/Parsers.hs
--- a/src/TLynx/Parsers.hs
+++ b/src/TLynx/Parsers.hs
@@ -10,8 +10,7 @@
 --
 -- Creation date: Wed Apr 22 13:34:35 2020.
 module TLynx.Parsers
-  (
-    parseTree,
+  ( parseTree,
     parseTrees,
     NewickFormat,
     newickFormat,
@@ -69,13 +68,21 @@
       <> short 'f'
       <> metavar "FORMAT"
       <> value Standard
-      <> help ("Newick tree format: " ++ nwlist ++ "; default: Standard; for detailed help, see 'tlynx --help'")
+      <> help
+        ( "Newick tree format: "
+            ++ nwlist
+            ++ "; default: Standard; for detailed help, see 'tlynx --help'"
+        )
   where
     nwfs = map show (allValues :: [NewickFormat])
     nwlist = intercalate ", " (init nwfs) <> ", or " <> last nwfs
 
 -- | Help for different 'NewickFormat's.
 newickHelp :: [String]
-newickHelp = map (toListItem . description) (allValues :: [NewickFormat]) ++ ["- Nexus file including Newick trees"]
+newickHelp =
+  map
+    (toListItem . describeNewickFormat)
+    (allValues :: [NewickFormat])
+    ++ ["- Nexus file including Newick trees"]
   where
     toListItem = ("- Newick " ++)
diff --git a/src/TLynx/Simulate/Simulate.hs b/src/TLynx/Simulate/Simulate.hs
--- a/src/TLynx/Simulate/Simulate.hs
+++ b/src/TLynx/Simulate/Simulate.hs
@@ -231,7 +231,7 @@
   BB.intDec n <> BB.char8 ' ' <> BB.doubleDec (fromLength l) <> BB.char8 '\n'
 
 -- Compute NChilSumStat for a phylogenetic tree.
-toNChildSumStat :: Measurable e => Tree e a -> NChildSumStat
+toNChildSumStat :: HasLength e => Tree e a -> NChildSumStat
 toNChildSumStat (Node br _ []) = [(getLen br, 1)]
 toNChildSumStat (Node br _ ts) = (getLen br, sumCh) : concat nChSS
   where
diff --git a/tlynx.cabal b/tlynx.cabal
--- a/tlynx.cabal
+++ b/tlynx.cabal
@@ -1,79 +1,78 @@
-cabal-version:  2.2
-name:           tlynx
-version:        0.5.0
-synopsis:       Handle phylogenetic trees
-description:    Examine, compare, and simulate phylogenetic trees in a reproducible way. Please see the README on GitHub at <https://github.com/dschrempf/elynx>.
-category:       Bioinformatics
-homepage:       https://github.com/dschrempf/elynx#readme
-bug-reports:    https://github.com/dschrempf/elynx/issues
-author:         Dominik Schrempf
-maintainer:     dominik.schrempf@gmail.com
-copyright:      Dominik Schrempf (2020)
-license:        GPL-3.0-or-later
-license-file:   LICENSE
-build-type:     Simple
+cabal-version:      2.2
+name:               tlynx
+version:            0.5.0.1
+license:            GPL-3.0-or-later
+license-file:       LICENSE
+copyright:          Dominik Schrempf (2020)
+maintainer:         dominik.schrempf@gmail.com
+author:             Dominik Schrempf
+homepage:           https://github.com/dschrempf/elynx#readme
+bug-reports:        https://github.com/dschrempf/elynx/issues
+synopsis:           Handle phylogenetic trees
+description:
+    Examine, compare, and simulate phylogenetic trees in a reproducible way. Please see the README on GitHub at <https://github.com/dschrempf/elynx>.
 
+category:           Bioinformatics
+build-type:         Simple
 extra-source-files:
     README.md
     ChangeLog.md
 
 source-repository head
-  type: git
-  location: https://github.com/dschrempf/elynx
+    type:     git
+    location: https://github.com/dschrempf/elynx
 
 library
-  exposed-modules:
-      TLynx.Compare.Compare
-      TLynx.Compare.Options
-      TLynx.Connect.Connect
-      TLynx.Connect.Options
-      TLynx.Distance.Distance
-      TLynx.Distance.Options
-      TLynx.Examine.Examine
-      TLynx.Examine.Options
-      TLynx.Options
-      TLynx.Parsers
-      TLynx.Shuffle.Options
-      TLynx.Shuffle.Shuffle
-      TLynx.Simulate.Options
-      TLynx.Simulate.Simulate
-      TLynx.TLynx
-  other-modules:
-      Paths_tlynx
-  autogen-modules:
-      Paths_tlynx
-  hs-source-dirs:
-      src
-  ghc-options: -Wall
-  build-depends:
-      aeson
-    , attoparsec
-    , base >=4.7 && <5
-    , bytestring
-    , comonad
-    , containers
-    , elynx-tools
-    , elynx-tree
-    , gnuplot
-    , lifted-async
-    , monad-logger
-    , mwc-random
-    , optparse-applicative
-    , parallel
-    , statistics
-    , text
-    , transformers
-    , vector
-  default-language: Haskell2010
+    exposed-modules:
+        TLynx.Compare.Compare
+        TLynx.Compare.Options
+        TLynx.Connect.Connect
+        TLynx.Connect.Options
+        TLynx.Distance.Distance
+        TLynx.Distance.Options
+        TLynx.Examine.Examine
+        TLynx.Examine.Options
+        TLynx.Options
+        TLynx.Parsers
+        TLynx.Shuffle.Options
+        TLynx.Shuffle.Shuffle
+        TLynx.Simulate.Options
+        TLynx.Simulate.Simulate
+        TLynx.TLynx
 
+    hs-source-dirs:   src
+    other-modules:    Paths_tlynx
+    autogen-modules:  Paths_tlynx
+    default-language: Haskell2010
+    ghc-options:      -Wall -Wunused-packages
+    build-depends:
+        aeson >=1.5.4.1 && <1.6,
+        attoparsec >=0.13.2.4 && <0.14,
+        base >=4.7 && <5,
+        bytestring >=0.10.10.0 && <0.11,
+        comonad >=5.0.6 && <5.1,
+        containers >=0.6.2.1 && <0.7,
+        elynx-tools >=0.5.0.1 && <0.6,
+        elynx-tree >=0.5.0.1 && <0.6,
+        gnuplot >=0.5.6.1 && <0.6,
+        lifted-async >=0.10.1.2 && <0.11,
+        monad-logger >=0.3.35 && <0.4,
+        mwc-random >=0.14.0.0 && <0.15,
+        optparse-applicative >=0.15.1.0 && <0.16,
+        parallel >=3.2.2.0 && <3.3,
+        statistics >=0.15.2.0 && <0.16,
+        text >=1.2.3.2 && <1.3,
+        transformers >=0.5.6.2 && <0.6,
+        vector >=0.12.1.2 && <0.13
+
 executable tlynx
-  main-is: Main.hs
-  other-modules:
-      Paths_tlynx
-  hs-source-dirs:
-      app
-  ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N
-  build-depends:
-      base >=4.7 && <5
-    , tlynx
-  default-language: Haskell2010
+    main-is:          Main.hs
+    hs-source-dirs:   app
+    other-modules:    Paths_tlynx
+    default-language: Haskell2010
+    ghc-options:
+        -Wall -Wunused-packages -threaded -rtsopts -with-rtsopts=-N
+
+    build-depends:
+        base >=4.7 && <5,
+        tlynx -any
