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/elynx-seq.cabal b/elynx-seq.cabal
--- a/elynx-seq.cabal
+++ b/elynx-seq.cabal
@@ -1,18 +1,19 @@
-cabal-version:  2.2
-name:           elynx-seq
-version:        0.5.0
-synopsis:       Handle molecular sequences
-description:    Examine, modify, and simulate molecular sequences 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:               elynx-seq
+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 molecular sequences
+description:
+    Examine, modify, and simulate molecular sequences 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
@@ -26,72 +27,70 @@
     data/TranslateMitochondrialVertebrateProtein.fasta
 
 source-repository head
-  type: git
-  location: https://github.com/dschrempf/elynx
+    type:     git
+    location: https://github.com/dschrempf/elynx
 
 library
-  exposed-modules:
-      ELynx.Data.Alphabet.Alphabet
-      ELynx.Data.Alphabet.Character
-      ELynx.Data.Alphabet.DistributionDiversity
-      ELynx.Data.Character.AminoAcid
-      ELynx.Data.Character.AminoAcidI
-      ELynx.Data.Character.AminoAcidS
-      ELynx.Data.Character.AminoAcidX
-      ELynx.Data.Character.Character
-      ELynx.Data.Character.Codon
-      ELynx.Data.Character.Nucleotide
-      ELynx.Data.Character.NucleotideI
-      ELynx.Data.Character.NucleotideX
-      ELynx.Data.Sequence.Alignment
-      ELynx.Data.Sequence.Defaults
-      ELynx.Data.Sequence.Distance
-      ELynx.Data.Sequence.Sequence
-      ELynx.Data.Sequence.Translate
-      ELynx.Export.Sequence.Fasta
-      ELynx.Import.Sequence.Fasta
-  other-modules:
-      Paths_elynx_seq
-  autogen-modules:
-      Paths_elynx_seq
-  hs-source-dirs:
-      src
-  ghc-options: -Wall
-  build-depends:
-      aeson
-    , attoparsec
-    , base >=4.7 && <5
-    , bytestring
-    , containers
-    , matrices
-    , mwc-random
-    , parallel
-    , primitive
-    , vector
-    , vector-th-unbox
-    , word8
-  default-language: Haskell2010
+    exposed-modules:
+        ELynx.Data.Alphabet.Alphabet
+        ELynx.Data.Alphabet.Character
+        ELynx.Data.Alphabet.DistributionDiversity
+        ELynx.Data.Character.AminoAcid
+        ELynx.Data.Character.AminoAcidI
+        ELynx.Data.Character.AminoAcidS
+        ELynx.Data.Character.AminoAcidX
+        ELynx.Data.Character.Character
+        ELynx.Data.Character.Codon
+        ELynx.Data.Character.Nucleotide
+        ELynx.Data.Character.NucleotideI
+        ELynx.Data.Character.NucleotideX
+        ELynx.Data.Sequence.Alignment
+        ELynx.Data.Sequence.Defaults
+        ELynx.Data.Sequence.Distance
+        ELynx.Data.Sequence.Sequence
+        ELynx.Data.Sequence.Translate
+        ELynx.Export.Sequence.Fasta
+        ELynx.Import.Sequence.Fasta
 
+    hs-source-dirs:   src
+    other-modules:    Paths_elynx_seq
+    autogen-modules:  Paths_elynx_seq
+    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,
+        containers >=0.6.2.1 && <0.7,
+        matrices >=0.5.0 && <0.6,
+        mwc-random >=0.14.0.0 && <0.15,
+        parallel >=3.2.2.0 && <3.3,
+        primitive >=0.7.1.0 && <0.8,
+        vector >=0.12.1.2 && <0.13,
+        vector-th-unbox >=0.2.1.7 && <0.3,
+        word8 >=0.1.3 && <0.2
+
 test-suite seq-test
-  type: exitcode-stdio-1.0
-  main-is: Spec.hs
-  other-modules:
-      ELynx.Data.Alphabet.DistributionDiversitySpec
-      ELynx.Data.Sequence.AlignmentSpec
-      ELynx.Data.Sequence.SequenceSpec
-      ELynx.Data.Sequence.TranslateSpec
-      ELynx.Export.Sequence.FastaSpec
-      ELynx.Import.Sequence.FastaSpec
-      Paths_elynx_seq
-  hs-source-dirs:
-      test
-  ghc-options: -Wall
-  build-depends:
-      base >=4.7 && <5
-    , bytestring
-    , elynx-seq
-    , elynx-tools
-    , hspec
-    , matrices
-    , vector
-  default-language: Haskell2010
+    type:             exitcode-stdio-1.0
+    main-is:          Spec.hs
+    hs-source-dirs:   test
+    other-modules:
+        ELynx.Data.Alphabet.DistributionDiversitySpec
+        ELynx.Data.Sequence.AlignmentSpec
+        ELynx.Data.Sequence.SequenceSpec
+        ELynx.Data.Sequence.TranslateSpec
+        ELynx.Export.Sequence.FastaSpec
+        ELynx.Import.Sequence.FastaSpec
+        Paths_elynx_seq
+
+    default-language: Haskell2010
+    ghc-options:      -Wall -Wunused-packages
+    build-depends:
+        base >=4.7 && <5,
+        bytestring >=0.10.10.0 && <0.11,
+        elynx-seq -any,
+        elynx-tools >=0.5.0.1 && <0.6,
+        hspec >=2.7.4 && <2.8,
+        matrices >=0.5.0 && <0.6,
+        vector >=0.12.1.2 && <0.13
diff --git a/src/ELynx/Data/Alphabet/Alphabet.hs b/src/ELynx/Data/Alphabet/Alphabet.hs
--- a/src/ELynx/Data/Alphabet/Alphabet.hs
+++ b/src/ELynx/Data/Alphabet/Alphabet.hs
@@ -273,7 +273,7 @@
 toStdPS '-' = ""
 toStdPS '.' = ""
 toStdPS '*' = ""
-toStdPS _ = error "toStdPX: Cannot convert to standard amino acid."
+toStdPS _ = error "toStdPS: Cannot convert to standard amino acid."
 
 proteinI :: AlphabetSpec
 proteinI = fromChars "ACDEFGHIKLMNPQRSTVWY" "-." "X?" "*JBZ" toStdPI
@@ -307,4 +307,4 @@
 toStdPI 'Z' = "EQ"
 toStdPI 'X' = "ACDEFGHIKLMNPQRSTVWY"
 toStdPI '?' = "ACDEFGHIKLMNPQRSTVWY"
-toStdPI _ = error "toStdPX: Cannot convert to standard amino acid."
+toStdPI _ = error "toStdPI: Cannot convert to standard amino acid."
diff --git a/src/ELynx/Data/Sequence/Alignment.hs b/src/ELynx/Data/Sequence/Alignment.hs
--- a/src/ELynx/Data/Sequence/Alignment.hs
+++ b/src/ELynx/Data/Sequence/Alignment.hs
@@ -244,7 +244,7 @@
 -- the number of characters.
 type FrequencyData = M.Matrix Double
 
--- Map a function on each row of a DIM2 array; parallel version with given chunk size.
+-- Map a function on each column of a DIM2 array; parallel version with given chunk size.
 fMapColParChunk ::
   (V.Unbox a, V.Unbox b) =>
   Int ->
