From a4b64bf1cdf47160b6b615d2c6493039abfd7a94 Mon Sep 17 00:00:00 2001
From: Eduardo Julian
Date: Thu, 28 Jul 2022 17:39:01 -0400
Subject: Extracted unit-testing machinery into its own module.

---
 stdlib/source/documentation/lux/data.lux           |   4 +-
 stdlib/source/documentation/lux/data/binary.lux    | 487 +++++++-------
 stdlib/source/documentation/lux/data/bit.lux       |  35 +-
 .../source/documentation/lux/data/collection.lux   |   4 +-
 .../documentation/lux/data/collection/array.lux    | 175 ++---
 .../documentation/lux/data/collection/bits.lux     |  79 +--
 .../lux/data/collection/dictionary.lux             | 151 ++---
 .../lux/data/collection/dictionary/ordered.lux     |  87 +--
 .../documentation/lux/data/collection/list.lux     |  19 +-
 .../lux/data/collection/list/property.lux          |  71 ++-
 .../documentation/lux/data/collection/queue.lux    |  82 +--
 .../lux/data/collection/queue/priority.lux         |  43 +-
 .../documentation/lux/data/collection/sequence.lux | 101 +--
 .../documentation/lux/data/collection/set.lux      |  89 +--
 .../lux/data/collection/set/multi.lux              |  97 +--
 .../lux/data/collection/set/ordered.lux            |  87 +--
 .../documentation/lux/data/collection/stack.lux    |  45 +-
 .../documentation/lux/data/collection/stream.lux   | 103 +--
 .../documentation/lux/data/collection/tree.lux     | 141 ++--
 .../lux/data/collection/tree/finger.lux            |  61 +-
 .../lux/data/collection/tree/zipper.lux            |  87 +--
 stdlib/source/documentation/lux/data/color.lux     | 177 +++---
 .../source/documentation/lux/data/color/named.lux  | 311 ++++-----
 stdlib/source/documentation/lux/data/format.lux    |   4 +-
 .../source/documentation/lux/data/format/json.lux  | 242 +++----
 .../source/documentation/lux/data/format/tar.lux   | 135 ++--
 .../source/documentation/lux/data/format/xml.lux   | 132 ++--
 stdlib/source/documentation/lux/data/identity.lux  |  25 +-
 stdlib/source/documentation/lux/data/product.lux   |  55 +-
 stdlib/source/documentation/lux/data/sum.lux       |  43 +-
 stdlib/source/documentation/lux/data/text.lux      | 708 +++++++++++----------
 .../source/documentation/lux/data/text/buffer.lux  |  23 +-
 .../documentation/lux/data/text/encoding.lux       | 311 ++++-----
 .../documentation/lux/data/text/encoding/utf8.lux  |  15 +-
 .../source/documentation/lux/data/text/escape.lux  |  45 +-
 .../source/documentation/lux/data/text/regex.lux   | 125 ++--
 .../source/documentation/lux/data/text/unicode.lux |   4 +-
 .../documentation/lux/data/text/unicode/block.lux  | 269 ++++----
 .../documentation/lux/data/text/unicode/set.lux    |  51 +-
 stdlib/source/library/lux/test.lux                 | 272 ++------
 stdlib/source/library/lux/test/unit.lux            | 223 +++++++
 stdlib/source/specification/aedifex/repository.lux |   9 +-
 .../specification/compositor/analysis/type.lux     |   4 +-
 .../specification/compositor/generation/case.lux   |  14 +-
 .../specification/compositor/generation/common.lux |  34 +-
 .../compositor/generation/function.lux             |   6 +-
 .../compositor/generation/primitive.lux            |   2 +-
 .../compositor/generation/reference.lux            |   4 +-
 .../compositor/generation/structure.lux            |   4 +-
 stdlib/source/specification/lux/abstract/apply.lux |   8 +-
 stdlib/source/specification/lux/abstract/codec.lux |   2 +-
 .../source/specification/lux/abstract/comonad.lux  |   6 +-
 stdlib/source/specification/lux/abstract/enum.lux  |   2 +-
 .../specification/lux/abstract/equivalence.lux     |   4 +-
 .../source/specification/lux/abstract/functor.lux  |  24 +-
 .../lux/abstract/functor/contravariant.lux         |   2 +-
 .../source/specification/lux/abstract/interval.lux |   4 +-
 stdlib/source/specification/lux/abstract/monad.lux |   6 +-
 .../source/specification/lux/abstract/monoid.lux   |   6 +-
 stdlib/source/specification/lux/abstract/order.lux |   4 +-
 stdlib/source/specification/lux/world/console.lux  |   7 +-
 .../source/specification/lux/world/environment.lux |   7 +-
 stdlib/source/specification/lux/world/file.lux     |  29 +-
 stdlib/source/specification/lux/world/shell.lux    |  15 +-
 stdlib/source/test/aedifex/cache.lux               |   9 +-
 stdlib/source/test/aedifex/cli.lux                 |   4 +-
 stdlib/source/test/aedifex/command/auto.lux        |   7 +-
 stdlib/source/test/aedifex/command/build.lux       |  31 +-
 stdlib/source/test/aedifex/command/clean.lux       |   7 +-
 stdlib/source/test/aedifex/command/deploy.lux      |   7 +-
 stdlib/source/test/aedifex/command/deps.lux        |   7 +-
 stdlib/source/test/aedifex/command/install.lux     |   9 +-
 stdlib/source/test/aedifex/command/pom.lux         |   9 +-
 stdlib/source/test/aedifex/command/test.lux        |  11 +-
 stdlib/source/test/aedifex/command/version.lux     |   7 +-
 .../source/test/aedifex/dependency/deployment.lux  |   9 +-
 .../source/test/aedifex/dependency/resolution.lux  |  15 +-
 stdlib/source/test/aedifex/input.lux               |   7 +-
 stdlib/source/test/aedifex/metadata/artifact.lux   |   7 +-
 stdlib/source/test/aedifex/metadata/snapshot.lux   |   7 +-
 stdlib/source/test/aedifex/repository/local.lux    |   7 +-
 stdlib/source/test/lux/abstract/equivalence.lux    |   2 +-
 stdlib/source/test/lux/abstract/interval.lux       |  30 +-
 .../source/test/lux/control/concurrency/actor.lux  |  19 +-
 .../source/test/lux/control/concurrency/async.lux  |  31 +-
 stdlib/source/test/lux/control/concurrency/frp.lux |  25 +-
 .../test/lux/control/concurrency/semaphore.lux     |  17 +-
 stdlib/source/test/lux/control/concurrency/stm.lux |  17 +-
 .../source/test/lux/control/concurrency/thread.lux |   7 +-
 .../test/lux/control/security/capability.lux       |   7 +-
 stdlib/source/test/lux/data/format/json.lux        |   2 +-
 stdlib/source/test/lux/data/text/regex.lux         |  84 +--
 stdlib/source/test/lux/ffi.php.lux                 |   2 +-
 stdlib/source/test/lux/ffi.scm.lux                 |   2 +-
 .../language/lux/phase/extension/analysis/lux.lux  |  80 +--
 .../language/lux/phase/synthesis/primitive.lux     |   2 +-
 .../language/lux/phase/synthesis/structure.lux     |   4 +-
 .../test/lux/meta/compiler/language/lux/syntax.lux |   6 +-
 .../source/test/lux/meta/compiler/meta/cache.lux   |   7 +-
 .../test/lux/meta/compiler/meta/cache/archive.lux  |   7 +-
 .../test/lux/meta/compiler/meta/cache/artifact.lux |   7 +-
 .../test/lux/meta/compiler/meta/cache/module.lux   |   9 +-
 .../test/lux/meta/compiler/meta/cache/purge.lux    |   7 +-
 .../source/test/lux/meta/compiler/meta/export.lux  |  11 +-
 .../source/test/lux/meta/compiler/meta/import.lux  |  11 +-
 stdlib/source/test/lux/meta/macro/context.lux      |   2 +-
 stdlib/source/test/lux/meta/static.lux             |   2 +-
 stdlib/source/test/lux/meta/symbol.lux             |   4 +-
 stdlib/source/test/lux/meta/target/jvm.lux         |   4 +-
 stdlib/source/test/lux/meta/type/resource.lux      |   7 +-
 stdlib/source/test/lux/test.lux                    | 243 +++----
 stdlib/source/test/lux/world/file.lux              |  11 +-
 stdlib/source/test/lux/world/file/watch.lux        |  11 +-
 stdlib/source/test/lux/world/net/http/client.lux   |   7 +-
 stdlib/source/test/lux/world/shell.lux             |   7 +-
 115 files changed, 3236 insertions(+), 3039 deletions(-)
 create mode 100644 stdlib/source/library/lux/test/unit.lux

(limited to 'stdlib/source')

diff --git a/stdlib/source/documentation/lux/data.lux b/stdlib/source/documentation/lux/data.lux
index 088366a27..93ecf8753 100644
--- a/stdlib/source/documentation/lux/data.lux
+++ b/stdlib/source/documentation/lux/data.lux
@@ -16,8 +16,8 @@
   ["[1][0]" sum]
   ["[1][0]" text]])
 
-(.def .public documentation
-  (.List $.Module)
+(def .public documentation
+  (List $.Documentation)
   (list.together
    (list /binary.documentation
          /bit.documentation
diff --git a/stdlib/source/documentation/lux/data/binary.lux b/stdlib/source/documentation/lux/data/binary.lux
index 6a660752e..34b12a2b6 100644
--- a/stdlib/source/documentation/lux/data/binary.lux
+++ b/stdlib/source/documentation/lux/data/binary.lux
@@ -4,247 +4,256 @@
    ["$" documentation]
    [data
     [text (.only \n)
-     ["%" \\format (.only format)]]]]]
+     ["%" \\format (.only format)]]
+    [collection
+     ["[0]" list (.use "[1]#[0]" monoid)]]]]]
  ["[0]" \\format]
  ["[0]" \\parser]
  [\\library
   ["[0]" /]])
 
-(`` (.def \\parser
-      (.List $.Module)
-      ($.module \\parser._
-                ""
-                [($.definition \\parser.binary_was_not_fully_read)
-                 ($.definition \\parser.size_8)
-                 ($.definition \\parser.size_16)
-                 ($.definition \\parser.size_32)
-                 ($.definition \\parser.size_64)
-                 ($.definition \\parser.bits_8)
-                 ($.definition \\parser.bits_16)
-                 ($.definition \\parser.bits_32)
-                 ($.definition \\parser.bits_64)
-                 ($.definition \\parser.nat)
-                 ($.definition \\parser.int)
-                 ($.definition \\parser.rev)
-                 ($.definition \\parser.frac)
-                 ($.definition \\parser.invalid_tag)
-                 ($.definition \\parser.or)
-                 ($.definition \\parser.not_a_bit)
-                 ($.definition \\parser.bit)
-                 ($.definition \\parser.text)
-                 ($.definition \\parser.maybe)
-                 ($.definition \\parser.set_elements_are_not_unique)
-                 ($.definition \\parser.symbol)
-                 ($.definition \\parser.type)
-                 ($.definition \\parser.location)
-                 ($.definition \\parser.code)
-
-                 ($.definition \\parser.Offset
-                   "An offset for reading within binary data.")
-
-                 ($.definition (\\parser.Parser it)
-                   "A parser for raw binary data.")
-
-                 ($.definition \\parser.result
-                   "Runs a parser and checks that all the binary data was read by it."
-                   [(result parser input)])
-
-                 ($.definition \\parser.end?
-                   "Checks whether there is no more data to read.")
-
-                 ($.definition \\parser.offset
-                   "The current offset (i.e. how much data has been read).")
-
-                 ($.definition \\parser.remaining
-                   "How much of the data remains to be read.")
-
-                 ($.definition \\parser.Size
-                   "The size of a chunk of data within a binary array.")
-
-                 ($.definition \\parser.rec
-                   "Tie the knot for a recursive parser.")
-
-                 ($.definition \\parser.any
-                   "Does no parsing, and just returns a dummy value.")
-
-                 ($.definition \\parser.segment
-                   "Parses a chunk of data of a given size."
-                   [(segment size)])
-
-                 (,, (with_template [<size> <name>]
-                       [($.definition <name>
-                          (format "Parses a block of data prefixed with a size that is " (%.nat <size>) " bytes long."))]
-
-                       [08 \\parser.binary_8]
-                       [16 \\parser.binary_16]
-                       [32 \\parser.binary_32]
-                       [64 \\parser.binary_64]
-                       ))
-
-                 (,, (with_template [<size> <name>]
-                       [($.definition <name>
-                          (format "Parses a block of (UTF-8 encoded) text prefixed with a size that is " (%.nat <size>) " bytes long."))]
-
-                       [08 \\parser.utf8_8]
-                       [16 \\parser.utf8_16]
-                       [32 \\parser.utf8_32]
-                       [64 \\parser.utf8_64]
-                       ))
-
-                 (,, (with_template [<size> <name>]
-                       [($.definition <name>
-                          (format "Parses a sequence of values prefixed with a size that is " (%.nat <size>) " bytes long."))]
-
-                       [08 \\parser.sequence_8]
-                       [16 \\parser.sequence_16]
-                       [32 \\parser.sequence_32]
-                       [64 \\parser.sequence_64]
-                       ))
-
-                 ($.definition \\parser.list
-                   "Parses an arbitrarily long list of values."
-                   [(list value)])
-
-                 ($.definition \\parser.set
-                   ""
-                   [(set hash value)])]
-                [])))
-
-(.def \\format
-  (.List $.Module)
-  ($.module \\format._
-            ""
-            [($.definition \\format.monoid)
-             ($.definition \\format.bits_8)
-             ($.definition \\format.bits_16)
-             ($.definition \\format.bits_32)
-             ($.definition \\format.bits_64)
-             ($.definition \\format.any)
-             ($.definition \\format.bit)
-             ($.definition \\format.nat)
-             ($.definition \\format.int)
-             ($.definition \\format.rev)
-             ($.definition \\format.frac)
-             ($.definition \\format.binary_8)
-             ($.definition \\format.binary_16)
-             ($.definition \\format.binary_32)
-             ($.definition \\format.binary_64)
-             ($.definition \\format.utf8_8)
-             ($.definition \\format.utf8_16)
-             ($.definition \\format.utf8_32)
-             ($.definition \\format.utf8_64)
-             ($.definition \\format.text)
-             ($.definition \\format.sequence_8)
-             ($.definition \\format.sequence_16)
-             ($.definition \\format.sequence_32)
-             ($.definition \\format.sequence_64)
-             ($.definition \\format.maybe)
-             ($.definition \\format.list)
-             ($.definition \\format.set)
-             ($.definition \\format.symbol)
-             ($.definition \\format.type)
-             ($.definition \\format.location)
-             ($.definition \\format.code)
-
-             ($.definition \\format.Mutation
-               "A mutation of binary data, tracking where in the data to transform.")
-
-             ($.definition \\format.Specification
-               "A description of how to transform binary data.")
-
-             ($.definition \\format.no_op
-               "A specification for empty binary data.")
-
-             ($.definition \\format.instance
-               "Given a specification of how to construct binary data, yields a binary blob that matches it.")
-
-             ($.definition (\\format.Format it)
-               "An operation that knows how to write information into a binary blob.")
-
-             ($.definition \\format.result
-               "Yields a binary blob with all the information written to it."
-               [(result format value)])
-
-             ($.definition \\format.or
-               ""
-               [(or left right)])
-
-             ($.definition \\format.and
-               ""
-               [(and pre post)])
-
-             ($.definition \\format.rec
-               "A combinator for recursive formats."
-               [(rec body)])
-
-             ($.definition \\format.segment
-               "Writes at most 'size' bytes of an input binary blob."
-               [(segment size)])]
-            []))
-
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.index_out_of_bounds)
-             ($.definition /.slice_out_of_bounds)
-             ($.definition /.size)
-             ($.definition /.equivalence)
-             ($.definition /.monoid)
-
-             ($.definition /.Binary
-               "A binary BLOB of data.")
-
-             ($.definition /.empty
-               "A fresh/empty binary BLOB of the specified size."
-               [(empty size)])
-
-             ($.definition /.mix
-               ""
-               [(mix f init binary)])
-
-             ($.definition /.bits_8
-               "Read 1 byte (8 bits) at the given index."
-               [(bits_8 index binary)])
-
-             ($.definition /.bits_16
-               "Read 2 bytes (16 bits) at the given index."
-               [(bits_16 index binary)])
-
-             ($.definition /.bits_32
-               "Read 4 bytes (32 bits) at the given index."
-               [(bits_32 index binary)])
-
-             ($.definition /.bits_64
-               "Read 8 bytes (64 bits) at the given index."
-               [(bits_64 index binary)])
-
-             ($.definition /.has_8!
-               "Write 1 byte (8 bits) at the given index."
-               [(has_8! index value binary)])
-
-             ($.definition /.has_16!
-               "Write 2 bytes (16 bits) at the given index."
-               [(has_16! index value binary)])
-
-             ($.definition /.has_32!
-               "Write 4 bytes (32 bits) at the given index."
-               [(has_32! index value binary)])
-
-             ($.definition /.has_64!
-               "Write 8 bytes (64 bits) at the given index."
-               [(has_64! index value binary)])
-
-             ($.definition /.copy!
-               "Mutates the target binary BLOB by copying bytes from the source BLOB to it."
-               [(copy! bytes source_offset source target_offset target)])
-
-             ($.definition /.slice
-               "Yields a subset of the binary BLOB, so long as the specified range is valid."
-               [(slice offset length binary)])
-
-             ($.definition /.after
-               "Yields a binary BLOB with at most the specified number of bytes removed."
-               [(after bytes binary)])]
-            [..\\format
-             ..\\parser]))
+(`` (def \\parser
+      (List $.Documentation)
+      (list ($.module \\parser._
+                      "")
+
+            ($.definition \\parser.binary_was_not_fully_read)
+            ($.definition \\parser.size_8)
+            ($.definition \\parser.size_16)
+            ($.definition \\parser.size_32)
+            ($.definition \\parser.size_64)
+            ($.definition \\parser.bits_8)
+            ($.definition \\parser.bits_16)
+            ($.definition \\parser.bits_32)
+            ($.definition \\parser.bits_64)
+            ($.definition \\parser.nat)
+            ($.definition \\parser.int)
+            ($.definition \\parser.rev)
+            ($.definition \\parser.frac)
+            ($.definition \\parser.invalid_tag)
+            ($.definition \\parser.or)
+            ($.definition \\parser.not_a_bit)
+            ($.definition \\parser.bit)
+            ($.definition \\parser.text)
+            ($.definition \\parser.maybe)
+            ($.definition \\parser.set_elements_are_not_unique)
+            ($.definition \\parser.symbol)
+            ($.definition \\parser.type)
+            ($.definition \\parser.location)
+            ($.definition \\parser.code)
+
+            ($.definition \\parser.Offset
+              "An offset for reading within binary data.")
+
+            ($.definition (\\parser.Parser it)
+              "A parser for raw binary data.")
+
+            ($.definition \\parser.result
+              "Runs a parser and checks that all the binary data was read by it."
+              [(result parser input)])
+
+            ($.definition \\parser.end?
+              "Checks whether there is no more data to read.")
+
+            ($.definition \\parser.offset
+              "The current offset (i.e. how much data has been read).")
+
+            ($.definition \\parser.remaining
+              "How much of the data remains to be read.")
+
+            ($.definition \\parser.Size
+              "The size of a chunk of data within a binary array.")
+
+            ($.definition \\parser.rec
+              "Tie the knot for a recursive parser.")
+
+            ($.definition \\parser.any
+              "Does no parsing, and just returns a dummy value.")
+
+            ($.definition \\parser.segment
+              "Parses a chunk of data of a given size."
+              [(segment size)])
+
+            (,, (with_template [<size> <name>]
+                  [($.definition <name>
+                     (format "Parses a block of data prefixed with a size that is " (%.nat <size>) " bytes long."))]
+
+                  [08 \\parser.binary_8]
+                  [16 \\parser.binary_16]
+                  [32 \\parser.binary_32]
+                  [64 \\parser.binary_64]
+                  ))
+
+            (,, (with_template [<size> <name>]
+                  [($.definition <name>
+                     (format "Parses a block of (UTF-8 encoded) text prefixed with a size that is " (%.nat <size>) " bytes long."))]
+
+                  [08 \\parser.utf8_8]
+                  [16 \\parser.utf8_16]
+                  [32 \\parser.utf8_32]
+                  [64 \\parser.utf8_64]
+                  ))
+
+            (,, (with_template [<size> <name>]
+                  [($.definition <name>
+                     (format "Parses a sequence of values prefixed with a size that is " (%.nat <size>) " bytes long."))]
+
+                  [08 \\parser.sequence_8]
+                  [16 \\parser.sequence_16]
+                  [32 \\parser.sequence_32]
+                  [64 \\parser.sequence_64]
+                  ))
+
+            ($.definition \\parser.list
+              "Parses an arbitrarily long list of values."
+              [(list value)])
+
+            ($.definition \\parser.set
+              ""
+              [(set hash value)])
+            )))
+
+(def \\format
+  (List $.Documentation)
+  (list ($.module \\format._
+                  "")
+        
+        ($.definition \\format.monoid)
+        ($.definition \\format.bits_8)
+        ($.definition \\format.bits_16)
+        ($.definition \\format.bits_32)
+        ($.definition \\format.bits_64)
+        ($.definition \\format.any)
+        ($.definition \\format.bit)
+        ($.definition \\format.nat)
+        ($.definition \\format.int)
+        ($.definition \\format.rev)
+        ($.definition \\format.frac)
+        ($.definition \\format.binary_8)
+        ($.definition \\format.binary_16)
+        ($.definition \\format.binary_32)
+        ($.definition \\format.binary_64)
+        ($.definition \\format.utf8_8)
+        ($.definition \\format.utf8_16)
+        ($.definition \\format.utf8_32)
+        ($.definition \\format.utf8_64)
+        ($.definition \\format.text)
+        ($.definition \\format.sequence_8)
+        ($.definition \\format.sequence_16)
+        ($.definition \\format.sequence_32)
+        ($.definition \\format.sequence_64)
+        ($.definition \\format.maybe)
+        ($.definition \\format.list)
+        ($.definition \\format.set)
+        ($.definition \\format.symbol)
+        ($.definition \\format.type)
+        ($.definition \\format.location)
+        ($.definition \\format.code)
+
+        ($.definition \\format.Mutation
+          "A mutation of binary data, tracking where in the data to transform.")
+
+        ($.definition \\format.Specification
+          "A description of how to transform binary data.")
+
+        ($.definition \\format.no_op
+          "A specification for empty binary data.")
+
+        ($.definition \\format.instance
+          "Given a specification of how to construct binary data, yields a binary blob that matches it.")
+
+        ($.definition (\\format.Format it)
+          "An operation that knows how to write information into a binary blob.")
+
+        ($.definition \\format.result
+          "Yields a binary blob with all the information written to it."
+          [(result format value)])
+
+        ($.definition \\format.or
+          ""
+          [(or left right)])
+
+        ($.definition \\format.and
+          ""
+          [(and pre post)])
+
+        ($.definition \\format.rec
+          "A combinator for recursive formats."
+          [(rec body)])
+
+        ($.definition \\format.segment
+          "Writes at most 'size' bytes of an input binary blob."
+          [(segment size)])
+        ))
+
+(def .public documentation
+  (List $.Documentation)
+  (list.partial ($.module /._
+                          "")
+
+                ($.definition /.index_out_of_bounds)
+                ($.definition /.slice_out_of_bounds)
+                ($.definition /.size)
+                ($.definition /.equivalence)
+                ($.definition /.monoid)
+
+                ($.definition /.Binary
+                  "A binary BLOB of data.")
+
+                ($.definition /.empty
+                  "A fresh/empty binary BLOB of the specified size."
+                  [(empty size)])
+
+                ($.definition /.mix
+                  ""
+                  [(mix f init binary)])
+
+                ($.definition /.bits_8
+                  "Read 1 byte (8 bits) at the given index."
+                  [(bits_8 index binary)])
+
+                ($.definition /.bits_16
+                  "Read 2 bytes (16 bits) at the given index."
+                  [(bits_16 index binary)])
+
+                ($.definition /.bits_32
+                  "Read 4 bytes (32 bits) at the given index."
+                  [(bits_32 index binary)])
+
+                ($.definition /.bits_64
+                  "Read 8 bytes (64 bits) at the given index."
+                  [(bits_64 index binary)])
+
+                ($.definition /.has_8!
+                  "Write 1 byte (8 bits) at the given index."
+                  [(has_8! index value binary)])
+
+                ($.definition /.has_16!
+                  "Write 2 bytes (16 bits) at the given index."
+                  [(has_16! index value binary)])
+
+                ($.definition /.has_32!
+                  "Write 4 bytes (32 bits) at the given index."
+                  [(has_32! index value binary)])
+
+                ($.definition /.has_64!
+                  "Write 8 bytes (64 bits) at the given index."
+                  [(has_64! index value binary)])
+
+                ($.definition /.copy!
+                  "Mutates the target binary BLOB by copying bytes from the source BLOB to it."
+                  [(copy! bytes source_offset source target_offset target)])
+
+                ($.definition /.slice
+                  "Yields a subset of the binary BLOB, so long as the specified range is valid."
+                  [(slice offset length binary)])
+
+                ($.definition /.after
+                  "Yields a binary BLOB with at most the specified number of bytes removed."
+                  [(after bytes binary)])
+
+                (all list#composite
+                     ..\\format
+                     ..\\parser
+                     )
+                ))
diff --git a/stdlib/source/documentation/lux/data/bit.lux b/stdlib/source/documentation/lux/data/bit.lux
index 99238c240..bb6f5430e 100644
--- a/stdlib/source/documentation/lux/data/bit.lux
+++ b/stdlib/source/documentation/lux/data/bit.lux
@@ -8,21 +8,22 @@
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.no)
-             ($.definition /.yes)
-             ($.definition /.off)
-             ($.definition /.on)
-             ($.definition /.equivalence)
-             ($.definition /.hash)
-             ($.definition /.disjunction)
-             ($.definition /.conjunction)
-             ($.definition /.codec)
+(def .public documentation
+  (List $.Documentation)
+  (list ($.module /._
+                  "")
 
-             ($.definition /.complement
-               (format "Generates the complement of a predicate."
-                       \n "That is a predicate that returns the oposite of the original predicate."))]
-            []))
+        ($.definition /.no)
+        ($.definition /.yes)
+        ($.definition /.off)
+        ($.definition /.on)
+        ($.definition /.equivalence)
+        ($.definition /.hash)
+        ($.definition /.disjunction)
+        ($.definition /.conjunction)
+        ($.definition /.codec)
+
+        ($.definition /.complement
+          (format "Generates the complement of a predicate."
+                  \n "That is a predicate that returns the oposite of the original predicate."))
+        ))
diff --git a/stdlib/source/documentation/lux/data/collection.lux b/stdlib/source/documentation/lux/data/collection.lux
index 5712aa398..8920b36e7 100644
--- a/stdlib/source/documentation/lux/data/collection.lux
+++ b/stdlib/source/documentation/lux/data/collection.lux
@@ -19,8 +19,8 @@
   ["[1][0]" set]
   ["[1][0]" tree]])
 
-(.def .public documentation
-  (.List $.Module)
+(def .public documentation
+  (List $.Documentation)
   (list.together
    (list /array.documentation
          /bits.documentation
diff --git a/stdlib/source/documentation/lux/data/collection/array.lux b/stdlib/source/documentation/lux/data/collection/array.lux
index 164e10326..e821b976c 100644
--- a/stdlib/source/documentation/lux/data/collection/array.lux
+++ b/stdlib/source/documentation/lux/data/collection/array.lux
@@ -1,6 +1,6 @@
 (.require
  [library
-  [lux (.except list)
+  [lux (.except)
    ["$" documentation]
    [data
     ["[0]" text (.only \n)
@@ -10,89 +10,90 @@
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.primitive)
-             ($.definition /.equivalence)
-             ($.definition /.monoid)
-             ($.definition /.functor)
-             ($.definition /.mix)
-             ($.definition /.every?)
-             ($.definition /.any?)
-
-             ($.definition (/.Array it)
-               "Mutable arrays.")
-
-             ($.definition /.empty
-               "An empty array of the specified size."
-               [(empty size)])
-
-             ($.definition /.size
-               ""
-               [(size array)])
-
-             ($.definition /.item
-               ""
-               [(item index array)])
-
-             ($.definition /.has!
-               "Mutate the array by writing a value to the specified index."
-               [(has! index value array)])
-
-             ($.definition /.lacks!
-               "Mutate the array by deleting the value at the specified index."
-               [(lacks! index array)])
-
-             ($.definition /.has?
-               ""
-               [(has? index array)])
-
-             ($.definition /.revised!
-               "Mutate the array by updating the value at the specified index."
-               [(revised! index transform array)])
-
-             ($.definition /.upsert!
-               (format "Mutate the array by updating the value at the specified index."
-                       \n "If there is no value, update and write the default value given.")
-               [(upsert! index default transform array)])
-
-             ($.definition /.copy!
-               "Writes the contents of one array into the other."
-               [(copy! length src_start src_array dest_start dest_array)])
-
-             ($.definition /.occupancy
-               "Finds out how many cells in an array are occupied."
-               [(occupancy array)])
-
-             ($.definition /.vacancy
-               "Finds out how many cells in an array are vacant."
-               [(vacancy array)])
-
-             ($.definition /.only!
-               "Delete every item of the array that fails to satisfy the predicate."
-               [(only! p xs)])
-
-             ($.definition /.example
-               "Yields the first item in the array that satisfies the predicate."
-               [(example p xs)])
-
-             ($.definition /.example'
-               "Just like 'example', but with access to the index of each value."
-               [(example' p xs)])
-
-             ($.definition /.clone
-               "Yields a shallow clone of the array."
-               [(clone xs)])
-
-             ($.definition /.of_list
-               ""
-               [(of_list xs)])
-
-             ($.definition /.list
-               (format "Yields a list with every non-empty item in the array."
-                       \n "Can use the optional default value when encountering an empty cell in the array.")
-               [(list {.#None} array)
-                (list {.#Some default} array)])]
-            []))
+(def .public documentation
+  (.List $.Documentation)
+  (list ($.module /._
+                  "")
+
+        ($.definition /.primitive)
+        ($.definition /.equivalence)
+        ($.definition /.monoid)
+        ($.definition /.functor)
+        ($.definition /.mix)
+        ($.definition /.every?)
+        ($.definition /.any?)
+
+        ($.definition (/.Array it)
+          "Mutable arrays.")
+
+        ($.definition /.empty
+          "An empty array of the specified size."
+          [(empty size)])
+
+        ($.definition /.size
+          ""
+          [(size array)])
+
+        ($.definition /.item
+          ""
+          [(item index array)])
+
+        ($.definition /.has!
+          "Mutate the array by writing a value to the specified index."
+          [(has! index value array)])
+
+        ($.definition /.lacks!
+          "Mutate the array by deleting the value at the specified index."
+          [(lacks! index array)])
+
+        ($.definition /.has?
+          ""
+          [(has? index array)])
+
+        ($.definition /.revised!
+          "Mutate the array by updating the value at the specified index."
+          [(revised! index transform array)])
+
+        ($.definition /.upsert!
+          (format "Mutate the array by updating the value at the specified index."
+                  \n "If there is no value, update and write the default value given.")
+          [(upsert! index default transform array)])
+
+        ($.definition /.copy!
+          "Writes the contents of one array into the other."
+          [(copy! length src_start src_array dest_start dest_array)])
+
+        ($.definition /.occupancy
+          "Finds out how many cells in an array are occupied."
+          [(occupancy array)])
+
+        ($.definition /.vacancy
+          "Finds out how many cells in an array are vacant."
+          [(vacancy array)])
+
+        ($.definition /.only!
+          "Delete every item of the array that fails to satisfy the predicate."
+          [(only! p xs)])
+
+        ($.definition /.example
+          "Yields the first item in the array that satisfies the predicate."
+          [(example p xs)])
+
+        ($.definition /.example'
+          "Just like 'example', but with access to the index of each value."
+          [(example' p xs)])
+
+        ($.definition /.clone
+          "Yields a shallow clone of the array."
+          [(clone xs)])
+
+        ($.definition /.of_list
+          ""
+          [(of_list xs)])
+
+        ($.definition /.list
+          (format "Yields a list with every non-empty item in the array."
+                  \n "Can use the optional default value when encountering an empty cell in the array.")
+          [(list {.#None} array)
+           (list {.#Some default} array)])
+        ))
diff --git a/stdlib/source/documentation/lux/data/collection/bits.lux b/stdlib/source/documentation/lux/data/collection/bits.lux
index 4a4fa900d..296d9f087 100644
--- a/stdlib/source/documentation/lux/data/collection/bits.lux
+++ b/stdlib/source/documentation/lux/data/collection/bits.lux
@@ -5,42 +5,43 @@
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.Chunk)
-             ($.definition /.chunk_size)
-             ($.definition /.empty)
-             ($.definition /.empty?)
-             ($.definition /.equivalence)
-             ($.definition /.one)
-             ($.definition /.zero)
-             ($.definition /.flipped)
-             ($.definition /.and)
-             ($.definition /.or)
-             ($.definition /.xor)
-
-             ($.definition /.Bits
-               "A bit-map.")
-
-             ($.definition /.size
-               "Measures the size of a bit-map by counting all the 1s in the bit-map."
-               [(size bits)])
-
-             ($.definition /.capacity
-               ""
-               [(capacity bits)])
-
-             ($.definition /.bit
-               ""
-               [(bit index bits)])
-
-             ($.definition /.intersects?
-               ""
-               [(intersects? reference sample)])
-
-             ($.definition /.not
-               ""
-               [(not input)])]
-            []))
+(def .public documentation
+  (.List $.Documentation)
+  (list ($.module /._
+                  "")
+
+        ($.definition /.Chunk)
+        ($.definition /.chunk_size)
+        ($.definition /.empty)
+        ($.definition /.empty?)
+        ($.definition /.equivalence)
+        ($.definition /.one)
+        ($.definition /.zero)
+        ($.definition /.flipped)
+        ($.definition /.and)
+        ($.definition /.or)
+        ($.definition /.xor)
+
+        ($.definition /.Bits
+          "A bit-map.")
+
+        ($.definition /.size
+          "Measures the size of a bit-map by counting all the 1s in the bit-map."
+          [(size bits)])
+
+        ($.definition /.capacity
+          ""
+          [(capacity bits)])
+
+        ($.definition /.bit
+          ""
+          [(bit index bits)])
+
+        ($.definition /.intersects?
+          ""
+          [(intersects? reference sample)])
+
+        ($.definition /.not
+          ""
+          [(not input)])
+        ))
diff --git a/stdlib/source/documentation/lux/data/collection/dictionary.lux b/stdlib/source/documentation/lux/data/collection/dictionary.lux
index dcf2afce1..da8bd13e8 100644
--- a/stdlib/source/documentation/lux/data/collection/dictionary.lux
+++ b/stdlib/source/documentation/lux/data/collection/dictionary.lux
@@ -4,81 +4,86 @@
    ["$" documentation]
    [data
     [text (.only \n)
-     ["%" \\format (.only format)]]]]]
+     ["%" \\format (.only format)]]
+    [collection
+     ["[0]" list]]]]]
  [\\library
   ["[0]" /]]
  ["[0]" /
   ["[1][0]" ordered]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.key_hash)
-             ($.definition /.key_already_exists)
-             ($.definition /.size)
-             ($.definition /.empty?)
-             ($.definition /.entries)
-             ($.definition /.keys)
-             ($.definition /.values)
-             ($.definition /.equivalence)
-             ($.definition /.functor)
-
-             ($.definition (/.Dictionary key value)
-               "A dictionary implemented as a Hash-Array Mapped Trie (HAMT).")
-
-             ($.definition /.empty
-               "An empty dictionary."
-               [(empty key_hash)])
-
-             ($.definition /.has
-               ""
-               [(has key val dict)])
-
-             ($.definition /.lacks
-               ""
-               [(lacks key dict)])
-
-             ($.definition /.value
-               ""
-               [(value key dict)])
-
-             ($.definition /.key?
-               ""
-               [(key? dict key)])
-
-             ($.definition /.has'
-               "Only puts the KV-pair if the key is not already present."
-               [(has' key val dict)])
-
-             ($.definition /.revised
-               "Transforms the value located at key (if available), using the given function."
-               [(revised key f dict)])
-
-             ($.definition /.revised'
-               (format "Updates the value at the key; if it exists."
-                       \n "Otherwise, puts a value by applying the function to a default.")
-               [(revised' key default f dict)])
-
-             ($.definition /.of_list
-               ""
-               [(of_list key_hash kvs)])
-
-             ($.definition /.composite
-               (format "Merges 2 dictionaries."
-                       \n "If any collisions with keys occur, the values of dict2 will overwrite those of dict1.")
-               [(composite dict2 dict1)])
-
-             ($.definition /.composite_with
-               (format "Merges 2 dictionaries."
-                       \n "If any collisions with keys occur, a new value will be computed by applying 'f' to the values of dict2 and dict1.")
-               [(composite_with f dict2 dict1)])
-
-             ($.definition /.re_bound
-               "If there is a value under 'from_key', remove 'from_key' and store the value under 'to_key'."
-               [(re_bound from_key to_key dict)])
-
-             ($.definition /.sub
-               "A sub-dictionary, with only the specified keys."
-               [(sub keys dict)])]
-            [/ordered.documentation]))
+(def .public documentation
+  (List $.Documentation)
+  (list.partial ($.module /._
+                          "")
+
+                ($.definition /.key_hash)
+                ($.definition /.key_already_exists)
+                ($.definition /.size)
+                ($.definition /.empty?)
+                ($.definition /.entries)
+                ($.definition /.keys)
+                ($.definition /.values)
+                ($.definition /.equivalence)
+                ($.definition /.functor)
+
+                ($.definition (/.Dictionary key value)
+                  "A dictionary implemented as a Hash-Array Mapped Trie (HAMT).")
+
+                ($.definition /.empty
+                  "An empty dictionary."
+                  [(empty key_hash)])
+
+                ($.definition /.has
+                  ""
+                  [(has key val dict)])
+
+                ($.definition /.lacks
+                  ""
+                  [(lacks key dict)])
+
+                ($.definition /.value
+                  ""
+                  [(value key dict)])
+
+                ($.definition /.key?
+                  ""
+                  [(key? dict key)])
+
+                ($.definition /.has'
+                  "Only puts the KV-pair if the key is not already present."
+                  [(has' key val dict)])
+
+                ($.definition /.revised
+                  "Transforms the value located at key (if available), using the given function."
+                  [(revised key f dict)])
+
+                ($.definition /.revised'
+                  (format "Updates the value at the key; if it exists."
+                          \n "Otherwise, puts a value by applying the function to a default.")
+                  [(revised' key default f dict)])
+
+                ($.definition /.of_list
+                  ""
+                  [(of_list key_hash kvs)])
+
+                ($.definition /.composite
+                  (format "Merges 2 dictionaries."
+                          \n "If any collisions with keys occur, the values of dict2 will overwrite those of dict1.")
+                  [(composite dict2 dict1)])
+
+                ($.definition /.composite_with
+                  (format "Merges 2 dictionaries."
+                          \n "If any collisions with keys occur, a new value will be computed by applying 'f' to the values of dict2 and dict1.")
+                  [(composite_with f dict2 dict1)])
+
+                ($.definition /.re_bound
+                  "If there is a value under 'from_key', remove 'from_key' and store the value under 'to_key'."
+                  [(re_bound from_key to_key dict)])
+
+                ($.definition /.sub
+                  "A sub-dictionary, with only the specified keys."
+                  [(sub keys dict)])
+
+                /ordered.documentation
+                ))
diff --git a/stdlib/source/documentation/lux/data/collection/dictionary/ordered.lux b/stdlib/source/documentation/lux/data/collection/dictionary/ordered.lux
index c264b55f6..d44fe0863 100644
--- a/stdlib/source/documentation/lux/data/collection/dictionary/ordered.lux
+++ b/stdlib/source/documentation/lux/data/collection/dictionary/ordered.lux
@@ -1,6 +1,6 @@
 (.require
  [library
-  [lux (.except has revised)
+  [lux (.except)
    ["$" documentation]
    [data
     [text
@@ -11,56 +11,57 @@
  [\\library
   ["[0]" /]])
 
-(`` (.def .public documentation
-      (.List $.Module)
-      ($.module /._
-                ""
-                [($.definition /.empty?)
-                 ($.definition /.entries)
-                 ($.definition /.keys)
-                 ($.definition /.values)
-                 ($.definition /.equivalence)
+(`` (def .public documentation
+      (.List $.Documentation)
+      (list ($.module /._
+                      "")
 
-                 ($.definition (/.Dictionary key value)
-                   "A dictionary data-structure with ordered entries.")
+            ($.definition /.empty?)
+            ($.definition /.entries)
+            ($.definition /.keys)
+            ($.definition /.values)
+            ($.definition /.equivalence)
 
-                 ($.definition /.empty
-                   "An empty dictionary, employing the given order."
-                   [(empty order)])
+            ($.definition (/.Dictionary key value)
+              "A dictionary data-structure with ordered entries.")
 
-                 ($.definition /.value
-                   ""
-                   [(value key dict)])
+            ($.definition /.empty
+              "An empty dictionary, employing the given order."
+              [(empty order)])
 
-                 ($.definition /.key?
-                   ""
-                   [(key? dict key)])
+            ($.definition /.value
+              ""
+              [(value key dict)])
 
-                 (,, (with_template [<name>]
-                       [(`` ($.definition <name>
-                              (format "Yields value under the " (,, (template.text [<name>])) "imum key.")))]
+            ($.definition /.key?
+              ""
+              [(key? dict key)])
 
-                       [/.min]
-                       [/.max]
-                       ))
+            (,, (with_template [<name>]
+                  [(`` ($.definition <name>
+                         (format "Yields value under the " (,, (template.text [<name>])) "imum key.")))]
 
-                 ($.definition /.size
-                   ""
-                   [(size dict)])
+                  [/.min]
+                  [/.max]
+                  ))
 
-                 ($.definition /.has
-                   ""
-                   [(has key value dict)])
+            ($.definition /.size
+              ""
+              [(size dict)])
 
-                 ($.definition /.lacks
-                   ""
-                   [(lacks key dict)])
+            ($.definition /.has
+              ""
+              [(has key value dict)])
 
-                 ($.definition /.revised
-                   ""
-                   [(revised key transform dict)])
+            ($.definition /.lacks
+              ""
+              [(lacks key dict)])
 
-                 ($.definition /.of_list
-                   ""
-                   [(of_list order list)])]
-                [])))
+            ($.definition /.revised
+              ""
+              [(revised key transform dict)])
+
+            ($.definition /.of_list
+              ""
+              [(of_list order list)])
+            )))
diff --git a/stdlib/source/documentation/lux/data/collection/list.lux b/stdlib/source/documentation/lux/data/collection/list.lux
index bd4cf4a7d..cf08192c2 100644
--- a/stdlib/source/documentation/lux/data/collection/list.lux
+++ b/stdlib/source/documentation/lux/data/collection/list.lux
@@ -1,6 +1,6 @@
 (.require
  [library
-  [lux (.except all)
+  [lux (.except)
    ["$" documentation]
    [data
     [text (.only \n)
@@ -10,11 +10,12 @@
  ["[0]" /
   ["[1][0]" property]])
 
-(`` (.def .public documentation
-      (.List $.Module)
-      ($.module /._
-                ""
-                [($.definition /.mix)
+(`` (def .public documentation
+      (List $.Documentation)
+      (/.partial ($.module /._
+                           "")
+
+                 ($.definition /.mix)
                  ($.definition /.equivalence)
                  ($.definition /.hash)
                  ($.definition /.monoid)
@@ -163,5 +164,7 @@
                    [(do monad
                       [value (do_something 1 2 3)
                        .when (passes_test? value)]
-                      (do_something_else 4 5 6))])]
-                [/property.documentation])))
+                      (do_something_else 4 5 6))])
+
+                 /property.documentation
+                 )))
diff --git a/stdlib/source/documentation/lux/data/collection/list/property.lux b/stdlib/source/documentation/lux/data/collection/list/property.lux
index 1d8ac9892..c2d694d62 100644
--- a/stdlib/source/documentation/lux/data/collection/list/property.lux
+++ b/stdlib/source/documentation/lux/data/collection/list/property.lux
@@ -8,38 +8,39 @@
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.empty)
-             ($.definition /.size)
-             ($.definition /.empty?)
-             ($.definition /.keys)
-             ($.definition /.values)
-             ($.definition /.equivalence)
-
-             ($.definition (/.List it)
-               (format "A property list."
-                       \n "It's a simple dictionary-like structure with Text keys."))
-
-             ($.definition /.value
-               ""
-               [(value key properties)])
-
-             ($.definition /.contains?
-               ""
-               [(contains? key properties)])
-
-             ($.definition /.has
-               ""
-               [(has key val properties)])
-
-             ($.definition /.revised
-               ""
-               [(revised key f properties)])
-
-             ($.definition /.lacks
-               ""
-               [(lacks key properties)])]
-            []))
+(def .public documentation
+  (.List $.Documentation)
+  (list ($.module /._
+                  "")
+
+        ($.definition /.empty)
+        ($.definition /.size)
+        ($.definition /.empty?)
+        ($.definition /.keys)
+        ($.definition /.values)
+        ($.definition /.equivalence)
+
+        ($.definition (/.List it)
+          (format "A property list."
+                  \n "It's a simple dictionary-like structure with Text keys."))
+
+        ($.definition /.value
+          ""
+          [(value key properties)])
+
+        ($.definition /.contains?
+          ""
+          [(contains? key properties)])
+
+        ($.definition /.has
+          ""
+          [(has key val properties)])
+
+        ($.definition /.revised
+          ""
+          [(revised key f properties)])
+
+        ($.definition /.lacks
+          ""
+          [(lacks key properties)])
+        ))
diff --git a/stdlib/source/documentation/lux/data/collection/queue.lux b/stdlib/source/documentation/lux/data/collection/queue.lux
index d61c7dae6..44dd7f209 100644
--- a/stdlib/source/documentation/lux/data/collection/queue.lux
+++ b/stdlib/source/documentation/lux/data/collection/queue.lux
@@ -1,45 +1,51 @@
 (.require
  [library
-  [lux (.except list)
-   ["$" documentation]]]
+  [lux (.except)
+   ["$" documentation]
+   [data
+    [collection
+     ["[0]" list]]]]]
  [\\library
   ["[0]" /]]
  ["[0]" /
   ["[1][0]" priority]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.empty)
-             ($.definition /.size)
-             ($.definition /.empty?)
-             ($.definition /.equivalence)
-             ($.definition /.functor)
-
-             ($.definition (/.Queue it)
-               "A first-in, first-out sequential data-structure.")
-
-             ($.definition /.of_list
-               ""
-               [(of_list entries)])
-
-             ($.definition /.list
-               ""
-               [(list queue)])
-
-             ($.definition /.front
-               "Yields the first value in the queue, if any.")
-
-             ($.definition /.member?
-               ""
-               [(member? equivalence queue member)])
-
-             ($.definition /.next
-               ""
-               [(next queue)])
-
-             ($.definition /.end
-               ""
-               [(end val queue)])]
-            [/priority.documentation]))
+(def .public documentation
+  (List $.Documentation)
+  (list.partial ($.module /._
+                          "")
+
+                ($.definition /.empty)
+                ($.definition /.size)
+                ($.definition /.empty?)
+                ($.definition /.equivalence)
+                ($.definition /.functor)
+
+                ($.definition (/.Queue it)
+                  "A first-in, first-out sequential data-structure.")
+
+                ($.definition /.of_list
+                  ""
+                  [(of_list entries)])
+
+                ($.definition /.list
+                  ""
+                  [(list queue)])
+
+                ($.definition /.front
+                  "Yields the first value in the queue, if any.")
+
+                ($.definition /.member?
+                  ""
+                  [(member? equivalence queue member)])
+
+                ($.definition /.next
+                  ""
+                  [(next queue)])
+
+                ($.definition /.end
+                  ""
+                  [(end val queue)])
+
+                /priority.documentation
+                ))
diff --git a/stdlib/source/documentation/lux/data/collection/queue/priority.lux b/stdlib/source/documentation/lux/data/collection/queue/priority.lux
index 94eb7dc59..e08056fe3 100644
--- a/stdlib/source/documentation/lux/data/collection/queue/priority.lux
+++ b/stdlib/source/documentation/lux/data/collection/queue/priority.lux
@@ -1,29 +1,30 @@
 (.require
  [library
-  [lux (.except list)
+  [lux (.except)
    ["$" documentation]]]
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.Priority)
-             ($.definition /.max)
-             ($.definition /.min)
-             ($.definition (/.Queue it))
-             ($.definition /.empty)
-             ($.definition /.front)
-             ($.definition /.size)
-             ($.definition /.next)
-             ($.definition /.empty?)
+(def .public documentation
+  (.List $.Documentation)
+  (list ($.module /._
+                  "")
 
-             ($.definition /.member?
-               ""
-               [(member? equivalence queue member)])
+        ($.definition /.Priority)
+        ($.definition /.max)
+        ($.definition /.min)
+        ($.definition (/.Queue it))
+        ($.definition /.empty)
+        ($.definition /.front)
+        ($.definition /.size)
+        ($.definition /.next)
+        ($.definition /.empty?)
 
-             ($.definition /.end
-               ""
-               [(end priority value queue)])]
-            []))
+        ($.definition /.member?
+          ""
+          [(member? equivalence queue member)])
+
+        ($.definition /.end
+          ""
+          [(end priority value queue)])
+        ))
diff --git a/stdlib/source/documentation/lux/data/collection/sequence.lux b/stdlib/source/documentation/lux/data/collection/sequence.lux
index 2db4aba19..5dbbe420f 100644
--- a/stdlib/source/documentation/lux/data/collection/sequence.lux
+++ b/stdlib/source/documentation/lux/data/collection/sequence.lux
@@ -1,66 +1,67 @@
 (.require
  [library
-  [lux (.except list has revised)
+  [lux (.except)
    ["$" documentation]]]
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.empty)
-             ($.definition /.size)
-             ($.definition /.index_out_of_bounds)
-             ($.definition /.of_list)
-             ($.definition /.empty?)
-             ($.definition /.equivalence)
-             ($.definition /.mix)
-             ($.definition /.monoid)
-             ($.definition /.functor)
-             ($.definition /.apply)
-             ($.definition /.monad)
-             ($.definition /.reversed)
-             ($.definition /.every?)
-             ($.definition /.any?)
+(def .public documentation
+  (List $.Documentation)
+  (list ($.module /._
+                  "")
 
-             ($.definition (/.Sequence it)
-               "A sequential data-structure with fast random access.")
+        ($.definition /.empty)
+        ($.definition /.size)
+        ($.definition /.index_out_of_bounds)
+        ($.definition /.of_list)
+        ($.definition /.empty?)
+        ($.definition /.equivalence)
+        ($.definition /.mix)
+        ($.definition /.monoid)
+        ($.definition /.functor)
+        ($.definition /.apply)
+        ($.definition /.monad)
+        ($.definition /.reversed)
+        ($.definition /.every?)
+        ($.definition /.any?)
 
-             ($.definition /.suffix
-               ""
-               [(suffix val sequence)])
+        ($.definition (/.Sequence it)
+          "A sequential data-structure with fast random access.")
 
-             ($.definition /.within_bounds?
-               "Determines whether the index is within the bounds of the sequence."
-               [(within_bounds? sequence idx)])
+        ($.definition /.suffix
+          ""
+          [(suffix val sequence)])
 
-             ($.definition /.item
-               ""
-               [(item idx sequence)])
+        ($.definition /.within_bounds?
+          "Determines whether the index is within the bounds of the sequence."
+          [(within_bounds? sequence idx)])
 
-             ($.definition /.has
-               ""
-               [(has idx val sequence)])
+        ($.definition /.item
+          ""
+          [(item idx sequence)])
 
-             ($.definition /.revised
-               ""
-               [(revised idx f sequence)])
+        ($.definition /.has
+          ""
+          [(has idx val sequence)])
 
-             ($.definition /.prefix
-               ""
-               [(prefix sequence)])
+        ($.definition /.revised
+          ""
+          [(revised idx f sequence)])
 
-             ($.definition /.list
-               ""
-               [(list sequence)])
+        ($.definition /.prefix
+          ""
+          [(prefix sequence)])
 
-             ($.definition /.member?
-               ""
-               [(member? equivalence sequence val)])
+        ($.definition /.list
+          ""
+          [(list sequence)])
 
-             ($.definition /.sequence
-               "Sequence literals."
-               [(is (Sequence Nat)
-                    (sequence 12 34 56 78 90))])]
-            []))
+        ($.definition /.member?
+          ""
+          [(member? equivalence sequence val)])
+
+        ($.definition /.sequence
+          "Sequence literals."
+          [(is (Sequence Nat)
+               (sequence 12 34 56 78 90))])
+        ))
diff --git a/stdlib/source/documentation/lux/data/collection/set.lux b/stdlib/source/documentation/lux/data/collection/set.lux
index c9c02c488..94ad8e8d9 100644
--- a/stdlib/source/documentation/lux/data/collection/set.lux
+++ b/stdlib/source/documentation/lux/data/collection/set.lux
@@ -4,50 +4,57 @@
    ["$" documentation]
    [data
     ["[0]" text (.only \n)
-     ["%" \\format (.only format)]]]]]
+     ["%" \\format (.only format)]]
+    [collection
+     ["[0]" list (.use "[1]#[0]" monoid)]]]]]
  [\\library
   ["[0]" /]]
  ["[0]" /
   ["[1][0]" multi]
   ["[1][0]" ordered]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition (/.Set it))
-             ($.definition /.member_hash)
-             ($.definition /.empty)
-             ($.definition /.size)
-             ($.definition /.lacks)
-             ($.definition /.member?)
-             ($.definition /.list)
-             ($.definition /.union)
-             ($.definition /.equivalence)
-             ($.definition /.hash)
-             ($.definition /.monoid)
-             ($.definition /.empty?)
-             ($.definition /.of_list)
-             ($.definition /.predicate)
-
-             ($.definition /.has
-               ""
-               [(has elem set)])
-
-             ($.definition /.difference
-               ""
-               [(difference sub base)])
-
-             ($.definition /.intersection
-               ""
-               [(intersection filter base)])
-
-             ($.definition /.sub?
-               ""
-               [(sub? super sub)])
-
-             ($.definition /.super?
-               ""
-               [(super? sub super)])]
-            [/multi.documentation
-             /ordered.documentation]))
+(def .public documentation
+  (List $.Documentation)
+  (list.partial ($.module /._
+                          "")
+
+                ($.definition (/.Set it))
+                ($.definition /.member_hash)
+                ($.definition /.empty)
+                ($.definition /.size)
+                ($.definition /.lacks)
+                ($.definition /.member?)
+                ($.definition /.list)
+                ($.definition /.union)
+                ($.definition /.equivalence)
+                ($.definition /.hash)
+                ($.definition /.monoid)
+                ($.definition /.empty?)
+                ($.definition /.of_list)
+                ($.definition /.predicate)
+
+                ($.definition /.has
+                  ""
+                  [(has elem set)])
+
+                ($.definition /.difference
+                  ""
+                  [(difference sub base)])
+
+                ($.definition /.intersection
+                  ""
+                  [(intersection filter base)])
+
+                ($.definition /.sub?
+                  ""
+                  [(sub? super sub)])
+
+                ($.definition /.super?
+                  ""
+                  [(super? sub super)])
+
+                (all list#composite
+                     /multi.documentation
+                     /ordered.documentation
+                     )
+                ))
diff --git a/stdlib/source/documentation/lux/data/collection/set/multi.lux b/stdlib/source/documentation/lux/data/collection/set/multi.lux
index 77944599e..8c84efe56 100644
--- a/stdlib/source/documentation/lux/data/collection/set/multi.lux
+++ b/stdlib/source/documentation/lux/data/collection/set/multi.lux
@@ -1,6 +1,6 @@
 (.require
  [library
-  [lux (.except list has)
+  [lux (.except)
    ["$" documentation]
    [data
     ["[0]" text (.only \n)
@@ -8,50 +8,51 @@
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.empty)
-             ($.definition /.size)
-             ($.definition /.list)
-             ($.definition /.equivalence)
-             ($.definition /.hash)
-             ($.definition /.empty?)
-             ($.definition /.of_list)
-             ($.definition /.of_set)
-             ($.definition /.union)
-             ($.definition /.sum)
-             ($.definition /.intersection)
-             ($.definition /.difference)
-
-             ($.definition (/.Set it)
-               "A set that keeps track of repetition in its entries.")
-
-             ($.definition /.has
-               ""
-               [(has multiplicity elem set)])
-
-             ($.definition /.lacks
-               ""
-               [(lacks multiplicity elem set)])
-
-             ($.definition /.multiplicity
-               ""
-               [(multiplicity set elem)])
-
-             ($.definition /.sub?
-               "Is 'subject' a sub-set of 'reference'?"
-               [(sub? reference subject)])
-
-             ($.definition /.support
-               "A set of the unique (non repeated) members."
-               [(support set)])
-
-             ($.definition /.member?
-               ""
-               [(member? set elem)])
-
-             ($.definition /.super?
-               "Is 'subject' a super-set of 'reference'?")]
-            []))
+(def .public documentation
+  (.List $.Documentation)
+  (list ($.module /._
+                  "")
+
+        ($.definition /.empty)
+        ($.definition /.size)
+        ($.definition /.list)
+        ($.definition /.equivalence)
+        ($.definition /.hash)
+        ($.definition /.empty?)
+        ($.definition /.of_list)
+        ($.definition /.of_set)
+        ($.definition /.union)
+        ($.definition /.sum)
+        ($.definition /.intersection)
+        ($.definition /.difference)
+
+        ($.definition (/.Set it)
+          "A set that keeps track of repetition in its entries.")
+
+        ($.definition /.has
+          ""
+          [(has multiplicity elem set)])
+
+        ($.definition /.lacks
+          ""
+          [(lacks multiplicity elem set)])
+
+        ($.definition /.multiplicity
+          ""
+          [(multiplicity set elem)])
+
+        ($.definition /.sub?
+          "Is 'subject' a sub-set of 'reference'?"
+          [(sub? reference subject)])
+
+        ($.definition /.support
+          "A set of the unique (non repeated) members."
+          [(support set)])
+
+        ($.definition /.member?
+          ""
+          [(member? set elem)])
+
+        ($.definition /.super?
+          "Is 'subject' a super-set of 'reference'?")
+        ))
diff --git a/stdlib/source/documentation/lux/data/collection/set/ordered.lux b/stdlib/source/documentation/lux/data/collection/set/ordered.lux
index a34ad7bb2..82f29e9d9 100644
--- a/stdlib/source/documentation/lux/data/collection/set/ordered.lux
+++ b/stdlib/source/documentation/lux/data/collection/set/ordered.lux
@@ -1,6 +1,6 @@
 (.require
  [library
-  [lux (.except list has)
+  [lux (.except)
    ["$" documentation]
    [data
     ["[0]" text (.only \n)
@@ -8,45 +8,46 @@
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.empty)
-             ($.definition /.min)
-             ($.definition /.max)
-             ($.definition /.size)
-             ($.definition /.empty?)
-             ($.definition /.list)
-             ($.definition /.of_list)
-             ($.definition /.union)
-             ($.definition /.intersection)
-             ($.definition /.equivalence)
-
-             ($.definition (/.Set it)
-               "A set with ordered entries.")
-
-             ($.definition /.member?
-               ""
-               [(member? set elem)])
-
-             ($.definition /.has
-               ""
-               [(has elem set)])
-
-             ($.definition /.lacks
-               ""
-               [(lacks elem set)])
-
-             ($.definition /.difference
-               ""
-               [(difference param subject)])
-
-             ($.definition /.sub?
-               "Is 'sub' a sub-set of 'super'?"
-               [(sub? super sub)])
-
-             ($.definition /.super?
-               "Is 'super' a super-set of 'sub'?"
-               [(super? sub super)])]
-            []))
+(def .public documentation
+  (.List $.Documentation)
+  (list ($.module /._
+                  "")
+
+        ($.definition /.empty)
+        ($.definition /.min)
+        ($.definition /.max)
+        ($.definition /.size)
+        ($.definition /.empty?)
+        ($.definition /.list)
+        ($.definition /.of_list)
+        ($.definition /.union)
+        ($.definition /.intersection)
+        ($.definition /.equivalence)
+
+        ($.definition (/.Set it)
+          "A set with ordered entries.")
+
+        ($.definition /.member?
+          ""
+          [(member? set elem)])
+
+        ($.definition /.has
+          ""
+          [(has elem set)])
+
+        ($.definition /.lacks
+          ""
+          [(lacks elem set)])
+
+        ($.definition /.difference
+          ""
+          [(difference param subject)])
+
+        ($.definition /.sub?
+          "Is 'sub' a sub-set of 'super'?"
+          [(sub? super sub)])
+
+        ($.definition /.super?
+          "Is 'super' a super-set of 'sub'?"
+          [(super? sub super)])
+        ))
diff --git a/stdlib/source/documentation/lux/data/collection/stack.lux b/stdlib/source/documentation/lux/data/collection/stack.lux
index 5a334c846..e882391c7 100644
--- a/stdlib/source/documentation/lux/data/collection/stack.lux
+++ b/stdlib/source/documentation/lux/data/collection/stack.lux
@@ -1,6 +1,6 @@
 (.require
  [library
-  [lux (.except list)
+  [lux (.except)
    ["$" documentation]
    [data
     ["[0]" text (.only \n)
@@ -8,28 +8,29 @@
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.empty)
-             ($.definition /.size)
-             ($.definition /.empty?)
-             ($.definition /.equivalence)
-             ($.definition /.functor)
+(def .public documentation
+  (List $.Documentation)
+  (list ($.module /._
+                  "")
 
-             ($.definition (/.Stack it)
-               "A first-in, last-out sequential data-structure.")
+        ($.definition /.empty)
+        ($.definition /.size)
+        ($.definition /.empty?)
+        ($.definition /.equivalence)
+        ($.definition /.functor)
 
-             ($.definition /.value
-               "Yields the top value in the stack, if any."
-               [(value stack)])
+        ($.definition (/.Stack it)
+          "A first-in, last-out sequential data-structure.")
 
-             ($.definition /.next
-               ""
-               [(next stack)])
+        ($.definition /.value
+          "Yields the top value in the stack, if any."
+          [(value stack)])
 
-             ($.definition /.top
-               ""
-               [(top value stack)])]
-            []))
+        ($.definition /.next
+          ""
+          [(next stack)])
+
+        ($.definition /.top
+          ""
+          [(top value stack)])
+        ))
diff --git a/stdlib/source/documentation/lux/data/collection/stream.lux b/stdlib/source/documentation/lux/data/collection/stream.lux
index 095642068..d32960d0d 100644
--- a/stdlib/source/documentation/lux/data/collection/stream.lux
+++ b/stdlib/source/documentation/lux/data/collection/stream.lux
@@ -1,6 +1,6 @@
 (.require
  [library
-  [lux (.except list pattern)
+  [lux (.except)
    ["$" documentation]
    [data
     [text (.only \n)
@@ -8,53 +8,54 @@
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.head)
-             ($.definition /.tail)
-             ($.definition /.functor)
-             ($.definition /.comonad)
-             ($.definition /.while)
-             ($.definition /.until)
-             ($.definition /.first)
-             ($.definition /.after)
-             ($.definition /.split_when)
-             ($.definition /.split_at)
-
-             ($.definition (/.Stream it)
-               "An infinite sequence of values.")
-
-             ($.definition /.iterations
-               "A stateful way of infinitely calculating the values of a stream."
-               [(iterations step init)])
-
-             ($.definition /.repeated
-               "Repeat a value forever."
-               [(repeated x)])
-
-             ($.definition /.cycle
-               "Go over the elements of a list forever."
-               [(cycle [start next])])
-
-             ($.definition /.item
-               ""
-               [(item idx stream)])
-
-             ($.definition /.only
-               "A new stream only with items that satisfy the predicate."
-               [(only predicate stream)])
-
-             ($.definition /.partition
-               (format "Split a stream in two based on a predicate."
-                       \n "The left side contains all entries for which the predicate is #1."
-                       \n "The right side contains all entries for which the predicate is #0.")
-               [(partition left? xs)])
-
-             ($.definition /.pattern
-               (format "Allows destructuring of streams in pattern-matching expressions."
-                       \n "Caveat emptor: Only use it for destructuring, and not for testing values within the streams.")
-               [(let [(pattern x y z _tail) (some_stream_func +1 +2 +3)]
-                  (func x y z))])]
-            []))
+(def .public documentation
+  (List $.Documentation)
+  (list ($.module /._
+                  "")
+
+        ($.definition /.head)
+        ($.definition /.tail)
+        ($.definition /.functor)
+        ($.definition /.comonad)
+        ($.definition /.while)
+        ($.definition /.until)
+        ($.definition /.first)
+        ($.definition /.after)
+        ($.definition /.split_when)
+        ($.definition /.split_at)
+
+        ($.definition (/.Stream it)
+          "An infinite sequence of values.")
+
+        ($.definition /.iterations
+          "A stateful way of infinitely calculating the values of a stream."
+          [(iterations step init)])
+
+        ($.definition /.repeated
+          "Repeat a value forever."
+          [(repeated x)])
+
+        ($.definition /.cycle
+          "Go over the elements of a list forever."
+          [(cycle [start next])])
+
+        ($.definition /.item
+          ""
+          [(item idx stream)])
+
+        ($.definition /.only
+          "A new stream only with items that satisfy the predicate."
+          [(only predicate stream)])
+
+        ($.definition /.partition
+          (format "Split a stream in two based on a predicate."
+                  \n "The left side contains all entries for which the predicate is #1."
+                  \n "The right side contains all entries for which the predicate is #0.")
+          [(partition left? xs)])
+
+        ($.definition /.pattern
+          (format "Allows destructuring of streams in pattern-matching expressions."
+                  \n "Caveat emptor: Only use it for destructuring, and not for testing values within the streams.")
+          [(let [(pattern x y z _tail) (some_stream_func +1 +2 +3)]
+             (func x y z))])
+        ))
diff --git a/stdlib/source/documentation/lux/data/collection/tree.lux b/stdlib/source/documentation/lux/data/collection/tree.lux
index 139d88ca3..ef03b419c 100644
--- a/stdlib/source/documentation/lux/data/collection/tree.lux
+++ b/stdlib/source/documentation/lux/data/collection/tree.lux
@@ -1,10 +1,12 @@
 (.require
  [library
-  [lux (.except list)
+  [lux (.except)
    ["$" documentation]
    [data
     ["[0]" text (.only \n)
-     ["%" \\format (.only format)]]]]]
+     ["%" \\format (.only format)]]
+    [collection
+     ["[0]" list (.use "[1]#[0]" monoid)]]]]]
  ["[0]" \\parser]
  [\\library
   ["[0]" /]]
@@ -12,78 +14,83 @@
   ["[1][0]" finger]
   ["[1][0]" zipper]])
 
-(`` (.def \\parser
-      (.List $.Module)
-      ($.module \\parser._
-                ""
-                [($.definition \\parser.cannot_move_further)
+(`` (def \\parser
+      (List $.Documentation)
+      (list ($.module \\parser._
+                      "")
 
-                 ($.definition (\\parser.Parser it)
-                   "A parser of arbitrary trees.")
+            ($.definition \\parser.cannot_move_further)
 
-                 ($.definition \\parser.result'
-                   "Applies the parser against a tree zipper."
-                   [(result' parser zipper)])
+            ($.definition (\\parser.Parser it)
+              "A parser of arbitrary trees.")
 
-                 ($.definition \\parser.result
-                   "Applies the parser against a tree."
-                   [(result parser tree)])
+            ($.definition \\parser.result'
+              "Applies the parser against a tree zipper."
+              [(result' parser zipper)])
 
-                 ($.definition \\parser.value
-                   "Yields the value inside the current tree node.")
+            ($.definition \\parser.result
+              "Applies the parser against a tree."
+              [(result parser tree)])
 
-                 (,, (with_template [<name> <doc>]
-                       [($.definition <name>
-                          <doc>)]
+            ($.definition \\parser.value
+              "Yields the value inside the current tree node.")
 
-                       [\\parser.down "Move down."]
-                       [\\parser.up "Move up."]
+            (,, (with_template [<name> <doc>]
+                  [($.definition <name>
+                     <doc>)]
 
-                       [\\parser.right "Move to the right."]
-                       [\\parser.rightmost "Move to the rightmost node."]
+                  [\\parser.down "Move down."]
+                  [\\parser.up "Move up."]
 
-                       [\\parser.left "Move to the left."]
-                       [\\parser.leftmost "Move to the leftmost node."]
-                       
-                       [\\parser.next "Move to the next node."]
-                       [\\parser.end "Move to the last node."]
-                       
-                       [\\parser.previous "Move to the previous node."]
-                       [\\parser.start "Move to the root node."]
-                       ))]
-                [])))
+                  [\\parser.right "Move to the right."]
+                  [\\parser.rightmost "Move to the rightmost node."]
+
+                  [\\parser.left "Move to the left."]
+                  [\\parser.leftmost "Move to the leftmost node."]
+                  
+                  [\\parser.next "Move to the next node."]
+                  [\\parser.end "Move to the last node."]
+                  
+                  [\\parser.previous "Move to the previous node."]
+                  [\\parser.start "Move to the root node."]
+                  ))
+            )))
 
 (.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.equivalence)
-             ($.definition /.functor)
-             ($.definition /.mix)
-
-             ($.definition (/.Tree it)
-               "A generic tree data-structure.")
-
-             ($.definition /.flat
-               "All the leaf values of the tree, in order."
-               [(flat tree)])
-
-             ($.definition /.leaf
-               ""
-               [(leaf value)])
-
-             ($.definition /.branch
-               ""
-               [(branch value children)])
-
-             ($.definition /.tree
-               "Tree literals."
-               [(is (Tree Nat)
-                    (tree 12
-                          {34 {}
-                              56 {}
-                              78 {90 {}}}))])]
-            [..\\parser
-             
-             /finger.documentation
-             /zipper.documentation]))
+  (List $.Documentation)
+  (list.partial ($.module /._
+                          "")
+
+                ($.definition /.equivalence)
+                ($.definition /.functor)
+                ($.definition /.mix)
+
+                ($.definition (/.Tree it)
+                  "A generic tree data-structure.")
+
+                ($.definition /.flat
+                  "All the leaf values of the tree, in order."
+                  [(flat tree)])
+
+                ($.definition /.leaf
+                  ""
+                  [(leaf value)])
+
+                ($.definition /.branch
+                  ""
+                  [(branch value children)])
+
+                ($.definition /.tree
+                  "Tree literals."
+                  [(is (Tree Nat)
+                       (tree 12
+                             {34 {}
+                                 56 {}
+                                 78 {90 {}}}))])
+
+                (all list#composite
+                     ..\\parser
+                     /finger.documentation
+                     /zipper.documentation
+                     )
+                ))
diff --git a/stdlib/source/documentation/lux/data/collection/tree/finger.lux b/stdlib/source/documentation/lux/data/collection/tree/finger.lux
index cc6573633..dacba465b 100644
--- a/stdlib/source/documentation/lux/data/collection/tree/finger.lux
+++ b/stdlib/source/documentation/lux/data/collection/tree/finger.lux
@@ -1,6 +1,6 @@
 (.require
  [library
-  [lux (.except list)
+  [lux (.except)
    ["$" documentation]
    [data
     ["[0]" text (.only \n)
@@ -8,40 +8,41 @@
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.tag)
-             ($.definition /.root)
+(def .public documentation
+  (.List $.Documentation)
+  (list ($.module /._
+                  "")
 
-             ($.definition (/.Tree @ tag value)
-               "A finger tree.")
+        ($.definition /.tag)
+        ($.definition /.root)
 
-             ($.definition (/.Builder @ tag)
-               "A builder for finter tree structures.")
+        ($.definition (/.Tree @ tag value)
+          "A finger tree.")
 
-             ($.definition /.builder
-               "A new builder using the given monoid."
-               [(builder monoid)])
+        ($.definition (/.Builder @ tag)
+          "A builder for finter tree structures.")
 
-             ($.definition /.value
-               ""
-               [(value tree)])
+        ($.definition /.builder
+          "A new builder using the given monoid."
+          [(builder monoid)])
 
-             ($.definition /.tags
-               ""
-               [(tags tree)])
+        ($.definition /.value
+          ""
+          [(value tree)])
 
-             ($.definition /.values
-               ""
-               [(values tree)])
+        ($.definition /.tags
+          ""
+          [(tags tree)])
 
-             ($.definition /.one
-               "Finds one value that meets the predicate."
-               [(one predicate tree)])
+        ($.definition /.values
+          ""
+          [(values tree)])
 
-             ($.definition /.exists?
-               "Verifies that a value exists which meets the predicate."
-               [(exists? predicate tree)])]
-            []))
+        ($.definition /.one
+          "Finds one value that meets the predicate."
+          [(one predicate tree)])
+
+        ($.definition /.exists?
+          "Verifies that a value exists which meets the predicate."
+          [(exists? predicate tree)])
+        ))
diff --git a/stdlib/source/documentation/lux/data/collection/tree/zipper.lux b/stdlib/source/documentation/lux/data/collection/tree/zipper.lux
index 7d33d944a..052f816fb 100644
--- a/stdlib/source/documentation/lux/data/collection/tree/zipper.lux
+++ b/stdlib/source/documentation/lux/data/collection/tree/zipper.lux
@@ -1,6 +1,6 @@
 (.require
  [library
-  [lux (.except list)
+  [lux (.except)
    ["$" documentation]
    [data
     ["[0]" text (.only \n)
@@ -8,50 +8,51 @@
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.equivalence)
-             ($.definition /.zipper)
-             ($.definition /.tree)
-             ($.definition /.value)
-             ($.definition /.leaf?)
-             ($.definition /.branch?)
-             ($.definition /.start?)
-             ($.definition /.down)
-             ($.definition /.up)
-             ($.definition /.right)
-             ($.definition /.rightmost)
-             ($.definition /.left)
-             ($.definition /.leftmost)
-             ($.definition /.next)
-             ($.definition /.previous)
-             ($.definition /.end)
-             ($.definition /.start)
-             ($.definition /.end?)
-             ($.definition /.remove)
-             ($.definition /.insert_left)
-             ($.definition /.insert_right)
-             ($.definition /.functor)
-             ($.definition /.comonad)
+(def .public documentation
+  (.List $.Documentation)
+  (list ($.module /._
+                  "")
 
-             ($.definition (/.Zipper it)
-               "Tree zippers, for easy navigation and editing of trees.")
+        ($.definition /.equivalence)
+        ($.definition /.zipper)
+        ($.definition /.tree)
+        ($.definition /.value)
+        ($.definition /.leaf?)
+        ($.definition /.branch?)
+        ($.definition /.start?)
+        ($.definition /.down)
+        ($.definition /.up)
+        ($.definition /.right)
+        ($.definition /.rightmost)
+        ($.definition /.left)
+        ($.definition /.leftmost)
+        ($.definition /.next)
+        ($.definition /.previous)
+        ($.definition /.end)
+        ($.definition /.start)
+        ($.definition /.end?)
+        ($.definition /.remove)
+        ($.definition /.insert_left)
+        ($.definition /.insert_right)
+        ($.definition /.functor)
+        ($.definition /.comonad)
 
-             ($.definition /.set
-               ""
-               [(set value zipper)])
+        ($.definition (/.Zipper it)
+          "Tree zippers, for easy navigation and editing of trees.")
 
-             ($.definition /.update
-               ""
-               [(update transform zipper)])
+        ($.definition /.set
+          ""
+          [(set value zipper)])
 
-             ($.definition /.interpose
-               ""
-               [(interpose value zipper)])
+        ($.definition /.update
+          ""
+          [(update transform zipper)])
 
-             ($.definition /.adopt
-               ""
-               [(adopt value zipper)])]
-            []))
+        ($.definition /.interpose
+          ""
+          [(interpose value zipper)])
+
+        ($.definition /.adopt
+          ""
+          [(adopt value zipper)])
+        ))
diff --git a/stdlib/source/documentation/lux/data/color.lux b/stdlib/source/documentation/lux/data/color.lux
index 5c2f37e09..b6ed59dab 100644
--- a/stdlib/source/documentation/lux/data/color.lux
+++ b/stdlib/source/documentation/lux/data/color.lux
@@ -4,7 +4,9 @@
    ["$" documentation]
    [data
     ["[0]" text (.only \n)
-     ["%" \\format (.only format)]]]
+     ["%" \\format (.only format)]]
+    [collection
+     ["[0]" list]]]
    [meta
     ["[0]" code (.only)
      ["<[1]>" \\parser]]
@@ -20,88 +22,91 @@
   (syntax (_ [[_ name] <code>.symbol])
     (in (list (code.text (format "A " (text.replaced "_" "-" name) " palette."))))))
 
-(`` (.def .public documentation
-      (.List $.Module)
-      ($.module /._
-                ""
-                [($.definition /.of_rgb)
-                 ($.definition /.rgb)
-                 ($.definition /.equivalence)
-                 ($.definition /.hash)
-                 ($.definition /.black)
-                 ($.definition /.white)
-                 ($.definition /.addition)
-                 ($.definition /.subtraction)
-                 ($.definition /.hsl)
-                 ($.definition /.of_hsl)
-                 ($.definition /.hsb)
-                 ($.definition /.of_hsb)
-                 ($.definition /.cmyk)
-                 ($.definition /.of_cmyk)
-                 ($.definition /.gray_scale)
-                 ($.definition /.Spread)
-                 ($.definition /.Palette)
-                 ($.definition /.darker)
-                 ($.definition /.brighter)
-                 ($.definition /.saturated)
-                 ($.definition /.un_saturated)
-
-                 ($.definition /.RGB
-                   "Red-Green-Blue color format.")
-
-                 ($.definition /.HSL
-                   "Hue-Saturation-Lightness color format.")
-
-                 ($.definition /.CMYK
-                   "Cyan-Magenta-Yellow-Key color format.")
-
-                 ($.definition /.HSB
-                   "Hue-Saturation-Brightness color format.")
-
-                 ($.definition /.Color
-                   "A color value, independent of color format.")
-
-                 ($.definition /.complement
-                   "The opposite color."
-                   [(complement color)])
-
-                 ($.definition /.interpolated
-                   ""
-                   [(interpolated ratio end start)])
-
-                 ($.definition /.analogous
-                   (palette_documentation /.analogous)
-                   [(analogous spread variations color)])
-
-                 ($.definition /.monochromatic
-                   (palette_documentation /.monochromatic)
-                   [(monochromatic spread variations color)])
-
-                 ($.definition /.Alpha
-                   "The degree of transparency of a pigment.")
-
-                 ($.definition /.transparent
-                   "The maximum degree of transparency.")
-
-                 ($.definition /.translucent
-                   "The average degree of transparency.")
-
-                 ($.definition /.opaque
-                   "The minimum degree of transparency.")
-
-                 ($.definition /.Pigment
-                   "A color with some degree of transparency.")
-
-                 (,, (with_template [<name>]
-                       [(`` ($.definition <name>
-                              (format "A "
-                                      (text.replaced "_" "-" (,, (template.text [<name>])))
-                                      " color scheme.")))]
-
-                       [/.triad]
-                       [/.clash]
-                       [/.split_complement]
-                       [/.square]
-                       [/.tetradic]
-                       ))]
-                [/named.documentation])))
+(`` (def .public documentation
+      (List $.Documentation)
+      (list.partial ($.module /._
+                              "")
+
+                    ($.definition /.of_rgb)
+                    ($.definition /.rgb)
+                    ($.definition /.equivalence)
+                    ($.definition /.hash)
+                    ($.definition /.black)
+                    ($.definition /.white)
+                    ($.definition /.addition)
+                    ($.definition /.subtraction)
+                    ($.definition /.hsl)
+                    ($.definition /.of_hsl)
+                    ($.definition /.hsb)
+                    ($.definition /.of_hsb)
+                    ($.definition /.cmyk)
+                    ($.definition /.of_cmyk)
+                    ($.definition /.gray_scale)
+                    ($.definition /.Spread)
+                    ($.definition /.Palette)
+                    ($.definition /.darker)
+                    ($.definition /.brighter)
+                    ($.definition /.saturated)
+                    ($.definition /.un_saturated)
+
+                    ($.definition /.RGB
+                      "Red-Green-Blue color format.")
+
+                    ($.definition /.HSL
+                      "Hue-Saturation-Lightness color format.")
+
+                    ($.definition /.CMYK
+                      "Cyan-Magenta-Yellow-Key color format.")
+
+                    ($.definition /.HSB
+                      "Hue-Saturation-Brightness color format.")
+
+                    ($.definition /.Color
+                      "A color value, independent of color format.")
+
+                    ($.definition /.complement
+                      "The opposite color."
+                      [(complement color)])
+
+                    ($.definition /.interpolated
+                      ""
+                      [(interpolated ratio end start)])
+
+                    ($.definition /.analogous
+                      (palette_documentation /.analogous)
+                      [(analogous spread variations color)])
+
+                    ($.definition /.monochromatic
+                      (palette_documentation /.monochromatic)
+                      [(monochromatic spread variations color)])
+
+                    ($.definition /.Alpha
+                      "The degree of transparency of a pigment.")
+
+                    ($.definition /.transparent
+                      "The maximum degree of transparency.")
+
+                    ($.definition /.translucent
+                      "The average degree of transparency.")
+
+                    ($.definition /.opaque
+                      "The minimum degree of transparency.")
+
+                    ($.definition /.Pigment
+                      "A color with some degree of transparency.")
+
+                    (,, (with_template [<name>]
+                          [(`` ($.definition <name>
+                                 (format "A "
+                                         (text.replaced "_" "-" (,, (template.text [<name>])))
+                                         " color scheme.")))]
+
+                          [/.triad]
+                          [/.clash]
+                          [/.split_complement]
+                          [/.square]
+                          [/.tetradic]
+                          ))
+
+                    /named.documentation
+                    )))
diff --git a/stdlib/source/documentation/lux/data/color/named.lux b/stdlib/source/documentation/lux/data/color/named.lux
index 239281ab1..4ed4c3324 100644
--- a/stdlib/source/documentation/lux/data/color/named.lux
+++ b/stdlib/source/documentation/lux/data/color/named.lux
@@ -12,159 +12,160 @@
   ["[0]" / (.only)
    ["/[1]" //]]])
 
-(`` (.def .public documentation
-      (.List $.Module)
-      ($.module /._
-                ""
-                [(,, (with_template [<name>]
-                       [($.definition <name>
-                          (let [[red green blue] (//.rgb <name>)
-                                [_ name] (symbol <name>)]
-                            (format "R:" (hex#encoded red)
-                                    " G:" (hex#encoded green)
-                                    " B:" (hex#encoded blue)
-                                    " | " (text.replaced "_" " " name))))]
+(`` (def .public documentation
+      (List $.Documentation)
+      (list ($.module /._
+                      "")
 
-                       [/.alice_blue]
-                       [/.antique_white]
-                       [/.aqua]
-                       [/.aquamarine]
-                       [/.azure]
-                       [/.beige]
-                       [/.bisque]
-                       [/.black]
-                       [/.blanched_almond]
-                       [/.blue]
-                       [/.blue_violet]
-                       [/.brown]
-                       [/.burly_wood]
-                       [/.cadet_blue]
-                       [/.chartreuse]
-                       [/.chocolate]
-                       [/.coral]
-                       [/.cornflower_blue]
-                       [/.cornsilk]
-                       [/.crimson]
-                       [/.cyan]
-                       [/.dark_blue]
-                       [/.dark_cyan]
-                       [/.dark_goldenrod]
-                       [/.dark_gray]
-                       [/.dark_green]
-                       [/.dark_khaki]
-                       [/.dark_magenta]
-                       [/.dark_olive_green]
-                       [/.dark_orange]
-                       [/.dark_orchid]
-                       [/.dark_red]
-                       [/.dark_salmon]
-                       [/.dark_sea_green]
-                       [/.dark_slate_blue]
-                       [/.dark_slate_gray]
-                       [/.dark_turquoise]
-                       [/.dark_violet]
-                       [/.deep_pink]
-                       [/.deep_sky_blue]
-                       [/.dim_gray]
-                       [/.dodger_blue]
-                       [/.fire_brick]
-                       [/.floral_white]
-                       [/.forest_green]
-                       [/.fuchsia]
-                       [/.gainsboro]
-                       [/.ghost_white]
-                       [/.gold]
-                       [/.goldenrod]
-                       [/.gray]
-                       [/.green]
-                       [/.green_yellow]
-                       [/.honey_dew]
-                       [/.hot_pink]
-                       [/.indian_red]
-                       [/.indigo]
-                       [/.ivory]
-                       [/.khaki]
-                       [/.lavender]
-                       [/.lavender_blush]
-                       [/.lawn_green]
-                       [/.lemon_chiffon]
-                       [/.light_blue]
-                       [/.light_coral]
-                       [/.light_cyan]
-                       [/.light_goldenrod_yellow]
-                       [/.light_gray]
-                       [/.light_green]
-                       [/.light_pink]
-                       [/.light_salmon]
-                       [/.light_sea_green]
-                       [/.light_sky_blue]
-                       [/.light_slate_gray]
-                       [/.light_steel_blue]
-                       [/.light_yellow]
-                       [/.lime]
-                       [/.lime_green]
-                       [/.linen]
-                       [/.magenta]
-                       [/.maroon]
-                       [/.medium_aquamarine]
-                       [/.medium_blue]
-                       [/.medium_orchid]
-                       [/.medium_purple]
-                       [/.medium_sea_green]
-                       [/.medium_slate_blue]
-                       [/.medium_spring_green]
-                       [/.medium_turquoise]
-                       [/.medium_violet_red]
-                       [/.midnight_blue]
-                       [/.mint_cream]
-                       [/.misty_rose]
-                       [/.moccasin]
-                       [/.navajo_white]
-                       [/.navy]
-                       [/.old_lace]
-                       [/.olive]
-                       [/.olive_drab]
-                       [/.orange]
-                       [/.orange_red]
-                       [/.orchid]
-                       [/.pale_goldenrod]
-                       [/.pale_green]
-                       [/.pale_turquoise]
-                       [/.pale_violet_red]
-                       [/.papaya_whip]
-                       [/.peach_puff]
-                       [/.peru]
-                       [/.pink]
-                       [/.plum]
-                       [/.powder_blue]
-                       [/.purple]
-                       [/.rebecca_purple]
-                       [/.red]
-                       [/.rosy_brown]
-                       [/.royal_blue]
-                       [/.saddle_brown]
-                       [/.salmon]
-                       [/.sandy_brown]
-                       [/.sea_green]
-                       [/.sea_shell]
-                       [/.sienna]
-                       [/.silver]
-                       [/.sky_blue]
-                       [/.slate_blue]
-                       [/.slate_gray]
-                       [/.snow]
-                       [/.spring_green]
-                       [/.steel_blue]
-                       [/.tan]
-                       [/.teal]
-                       [/.thistle]
-                       [/.tomato]
-                       [/.turquoise]
-                       [/.violet]
-                       [/.wheat]
-                       [/.white]
-                       [/.white_smoke]
-                       [/.yellow]
-                       [/.yellow_green]
-                       ))]
-                [])))
+            (,, (with_template [<name>]
+                  [($.definition <name>
+                     (let [[red green blue] (//.rgb <name>)
+                           [_ name] (symbol <name>)]
+                       (format "R:" (hex#encoded red)
+                               " G:" (hex#encoded green)
+                               " B:" (hex#encoded blue)
+                               " | " (text.replaced "_" " " name))))]
+
+                  [/.alice_blue]
+                  [/.antique_white]
+                  [/.aqua]
+                  [/.aquamarine]
+                  [/.azure]
+                  [/.beige]
+                  [/.bisque]
+                  [/.black]
+                  [/.blanched_almond]
+                  [/.blue]
+                  [/.blue_violet]
+                  [/.brown]
+                  [/.burly_wood]
+                  [/.cadet_blue]
+                  [/.chartreuse]
+                  [/.chocolate]
+                  [/.coral]
+                  [/.cornflower_blue]
+                  [/.cornsilk]
+                  [/.crimson]
+                  [/.cyan]
+                  [/.dark_blue]
+                  [/.dark_cyan]
+                  [/.dark_goldenrod]
+                  [/.dark_gray]
+                  [/.dark_green]
+                  [/.dark_khaki]
+                  [/.dark_magenta]
+                  [/.dark_olive_green]
+                  [/.dark_orange]
+                  [/.dark_orchid]
+                  [/.dark_red]
+                  [/.dark_salmon]
+                  [/.dark_sea_green]
+                  [/.dark_slate_blue]
+                  [/.dark_slate_gray]
+                  [/.dark_turquoise]
+                  [/.dark_violet]
+                  [/.deep_pink]
+                  [/.deep_sky_blue]
+                  [/.dim_gray]
+                  [/.dodger_blue]
+                  [/.fire_brick]
+                  [/.floral_white]
+                  [/.forest_green]
+                  [/.fuchsia]
+                  [/.gainsboro]
+                  [/.ghost_white]
+                  [/.gold]
+                  [/.goldenrod]
+                  [/.gray]
+                  [/.green]
+                  [/.green_yellow]
+                  [/.honey_dew]
+                  [/.hot_pink]
+                  [/.indian_red]
+                  [/.indigo]
+                  [/.ivory]
+                  [/.khaki]
+                  [/.lavender]
+                  [/.lavender_blush]
+                  [/.lawn_green]
+                  [/.lemon_chiffon]
+                  [/.light_blue]
+                  [/.light_coral]
+                  [/.light_cyan]
+                  [/.light_goldenrod_yellow]
+                  [/.light_gray]
+                  [/.light_green]
+                  [/.light_pink]
+                  [/.light_salmon]
+                  [/.light_sea_green]
+                  [/.light_sky_blue]
+                  [/.light_slate_gray]
+                  [/.light_steel_blue]
+                  [/.light_yellow]
+                  [/.lime]
+                  [/.lime_green]
+                  [/.linen]
+                  [/.magenta]
+                  [/.maroon]
+                  [/.medium_aquamarine]
+                  [/.medium_blue]
+                  [/.medium_orchid]
+                  [/.medium_purple]
+                  [/.medium_sea_green]
+                  [/.medium_slate_blue]
+                  [/.medium_spring_green]
+                  [/.medium_turquoise]
+                  [/.medium_violet_red]
+                  [/.midnight_blue]
+                  [/.mint_cream]
+                  [/.misty_rose]
+                  [/.moccasin]
+                  [/.navajo_white]
+                  [/.navy]
+                  [/.old_lace]
+                  [/.olive]
+                  [/.olive_drab]
+                  [/.orange]
+                  [/.orange_red]
+                  [/.orchid]
+                  [/.pale_goldenrod]
+                  [/.pale_green]
+                  [/.pale_turquoise]
+                  [/.pale_violet_red]
+                  [/.papaya_whip]
+                  [/.peach_puff]
+                  [/.peru]
+                  [/.pink]
+                  [/.plum]
+                  [/.powder_blue]
+                  [/.purple]
+                  [/.rebecca_purple]
+                  [/.red]
+                  [/.rosy_brown]
+                  [/.royal_blue]
+                  [/.saddle_brown]
+                  [/.salmon]
+                  [/.sandy_brown]
+                  [/.sea_green]
+                  [/.sea_shell]
+                  [/.sienna]
+                  [/.silver]
+                  [/.sky_blue]
+                  [/.slate_blue]
+                  [/.slate_gray]
+                  [/.snow]
+                  [/.spring_green]
+                  [/.steel_blue]
+                  [/.tan]
+                  [/.teal]
+                  [/.thistle]
+                  [/.tomato]
+                  [/.turquoise]
+                  [/.violet]
+                  [/.wheat]
+                  [/.white]
+                  [/.white_smoke]
+                  [/.yellow]
+                  [/.yellow_green]
+                  ))
+            )))
diff --git a/stdlib/source/documentation/lux/data/format.lux b/stdlib/source/documentation/lux/data/format.lux
index 7dbf22055..b1aaea3b6 100644
--- a/stdlib/source/documentation/lux/data/format.lux
+++ b/stdlib/source/documentation/lux/data/format.lux
@@ -12,8 +12,8 @@
   ["[1][0]" tar]
   ["[1][0]" xml]])
 
-(.def .public documentation
-  (.List $.Module)
+(def .public documentation
+  (List $.Documentation)
   (list.together
    (list /json.documentation
          /tar.documentation
diff --git a/stdlib/source/documentation/lux/data/format/json.lux b/stdlib/source/documentation/lux/data/format/json.lux
index 93bc3add9..48a62f2e0 100644
--- a/stdlib/source/documentation/lux/data/format/json.lux
+++ b/stdlib/source/documentation/lux/data/format/json.lux
@@ -4,7 +4,9 @@
    ["$" documentation]
    [data
     [text (.only \n)
-     ["%" \\format (.only format)]]]
+     ["%" \\format (.only format)]]
+    [collection
+     ["[0]" list]]]
    [meta
     [macro
      ["[0]" template]]]]]
@@ -12,122 +14,126 @@
  [\\library
   ["[0]" /]])
 
-(`` (.def \\parser
-      (.List $.Module)
-      ($.module \\parser._
-                ""
-                [($.definition \\parser.unconsumed_input)
-                 ($.definition \\parser.empty_input)
-                 ($.definition \\parser.unexpected_value)
-                 ($.definition \\parser.value_mismatch)
-
-                 ($.definition (\\parser.Parser it)
-                   "A JSON parser.")
-
-                 ($.definition \\parser.result
-                   (format "Executes the parser against a JSON object."
-                           \n "Verifies that all of the JSON was consumed by the parser.")
-                   [(result parser json)])
-
-                 ($.definition \\parser.any
-                   "Just returns the JSON input without applying any logic.")
-
-                 (,, (with_template [<name>]
-                       [(`` ($.definition <name>
-                              (format "Reads a JSON value as " (,, (template.text [<name>])) ".")))]
-
-                       [\\parser.null]
-                       [\\parser.boolean]
-                       [\\parser.number]
-                       [\\parser.string]
-                       ))
-
-                 (,, (with_template [<test> <check> <read>]
-                       [(`` ($.definition <test>
-                              (format "Asks whether a JSON value is a " (,, (template.text [<read>])) ".")))
-                        (`` ($.definition <check>
-                              (format "Ensures a JSON value is a " (,, (template.text [<read>])) ".")))]
-
-                       [\\parser.boolean? \\parser.this_boolean ..boolean]
-                       [\\parser.number?  \\parser.this_number  ..number]
-                       [\\parser.string?  \\parser.this_string  ..string]
-                       ))
-
-                 ($.definition \\parser.nullable
-                   "Enhances parser by adding NULL-handling."
-                   [(nullable parser)])
-
-                 ($.definition \\parser.array
-                   "Parses the contents of a JSON array."
-                   [(array parser)])
-
-                 ($.definition \\parser.object
-                   (format "Parses the contents of a JSON object."
-                           \n "Use this with the 'field' combinator.")
-                   [(object parser)])
-
-                 ($.definition \\parser.field
-                   (format "Parses a field inside a JSON object."
-                           \n "Use this inside the 'object' combinator.")
-                   [(field field_name parser)])
-
-                 ($.definition \\parser.dictionary
-                   "Parses a dictionary-like JSON object.")]
-                [])))
+(`` (def \\parser
+      (List $.Documentation)
+      (list ($.module \\parser._
+                      "")
+
+            ($.definition \\parser.unconsumed_input)
+            ($.definition \\parser.empty_input)
+            ($.definition \\parser.unexpected_value)
+            ($.definition \\parser.value_mismatch)
+
+            ($.definition (\\parser.Parser it)
+              "A JSON parser.")
+
+            ($.definition \\parser.result
+              (format "Executes the parser against a JSON object."
+                      \n "Verifies that all of the JSON was consumed by the parser.")
+              [(result parser json)])
+
+            ($.definition \\parser.any
+              "Just returns the JSON input without applying any logic.")
+
+            (,, (with_template [<name>]
+                  [(`` ($.definition <name>
+                         (format "Reads a JSON value as " (,, (template.text [<name>])) ".")))]
+
+                  [\\parser.null]
+                  [\\parser.boolean]
+                  [\\parser.number]
+                  [\\parser.string]
+                  ))
+
+            (,, (with_template [<test> <check> <read>]
+                  [(`` ($.definition <test>
+                         (format "Asks whether a JSON value is a " (,, (template.text [<read>])) ".")))
+                   (`` ($.definition <check>
+                         (format "Ensures a JSON value is a " (,, (template.text [<read>])) ".")))]
+
+                  [\\parser.boolean? \\parser.this_boolean ..boolean]
+                  [\\parser.number?  \\parser.this_number  ..number]
+                  [\\parser.string?  \\parser.this_string  ..string]
+                  ))
+
+            ($.definition \\parser.nullable
+              "Enhances parser by adding NULL-handling."
+              [(nullable parser)])
+
+            ($.definition \\parser.array
+              "Parses the contents of a JSON array."
+              [(array parser)])
+
+            ($.definition \\parser.object
+              (format "Parses the contents of a JSON object."
+                      \n "Use this with the 'field' combinator.")
+              [(object parser)])
+
+            ($.definition \\parser.field
+              (format "Parses a field inside a JSON object."
+                      \n "Use this inside the 'object' combinator.")
+              [(field field_name parser)])
+
+            ($.definition \\parser.dictionary
+              "Parses a dictionary-like JSON object.")
+            )))
 
 (`` (.def .public documentation
-      (.List $.Module)
-      ($.module /._
-                (format "Functionality for reading and writing values in the JSON format."
-                        \n "For more information, please see: http://www.json.org/")
-                [($.definition /.Null)
-                 ($.definition /.Boolean)
-                 ($.definition /.Number)
-                 ($.definition /.String)
-                 ($.definition /.JSON)
-                 ($.definition /.Array)
-                 ($.definition /.Object)
-                 ($.definition /.null?)
-                 ($.definition /.object)
-                 ($.definition /.equivalence)
-                 ($.definition /.format)
-                 ($.definition /.codec)
-
-                 ($.definition /.json
-                   "A simple way to produce JSON literals."
-                   ["null"
-                    (json #null)]
-                   ["true"
-                    (json #1)]
-                   ["123.456"
-                    (json +123.456)]
-                   ["'this is a string'"
-                    (json "this is a string")]
-                   ["['this' 'is' 'an' 'array']"
-                    (json ["this" "is" "an" "array"])]
-                   ["{'this' 'is', 'an' 'object'}"
-                    (json {"this" "is" "an" "object"})])
-
-                 ($.definition /.fields
-                   "Get all the fields in a JSON object."
-                   [(fields json)])
-
-                 ($.definition /.field
-                   "A JSON object field getter."
-                   [(field key json)])
-
-                 ($.definition /.has
-                   "A JSON object field setter."
-                   [(has key value json)])
-
-                 (,, (with_template [<name> <desc>]
-                       [($.definition <name>
-                          (format "A JSON object field getter for " <desc> "."))]
-
-                       [/.boolean_field "booleans"]
-                       [/.number_field  "numbers"]
-                       [/.string_field  "strings"]
-                       [/.array_field   "arrays"]
-                       [/.object_field  "objects"]
-                       ))]
-                [..\\parser])))
+      (List $.Documentation)
+      (list.partial ($.module /._
+                              (format "Functionality for reading and writing values in the JSON format."
+                                      \n "For more information, please see: http://www.json.org/"))
+
+                    ($.definition /.Null)
+                    ($.definition /.Boolean)
+                    ($.definition /.Number)
+                    ($.definition /.String)
+                    ($.definition /.JSON)
+                    ($.definition /.Array)
+                    ($.definition /.Object)
+                    ($.definition /.null?)
+                    ($.definition /.object)
+                    ($.definition /.equivalence)
+                    ($.definition /.format)
+                    ($.definition /.codec)
+
+                    ($.definition /.json
+                      "A simple way to produce JSON literals."
+                      ["null"
+                       (json #null)]
+                      ["true"
+                       (json #1)]
+                      ["123.456"
+                       (json +123.456)]
+                      ["'this is a string'"
+                       (json "this is a string")]
+                      ["['this' 'is' 'an' 'array']"
+                       (json ["this" "is" "an" "array"])]
+                      ["{'this' 'is', 'an' 'object'}"
+                       (json {"this" "is" "an" "object"})])
+
+                    ($.definition /.fields
+                      "Get all the fields in a JSON object."
+                      [(fields json)])
+
+                    ($.definition /.field
+                      "A JSON object field getter."
+                      [(field key json)])
+
+                    ($.definition /.has
+                      "A JSON object field setter."
+                      [(has key value json)])
+
+                    (,, (with_template [<name> <desc>]
+                          [($.definition <name>
+                             (format "A JSON object field getter for " <desc> "."))]
+
+                          [/.boolean_field "booleans"]
+                          [/.number_field  "numbers"]
+                          [/.string_field  "strings"]
+                          [/.array_field   "arrays"]
+                          [/.object_field  "objects"]
+                          ))
+
+                    ..\\parser
+                    )))
diff --git a/stdlib/source/documentation/lux/data/format/tar.lux b/stdlib/source/documentation/lux/data/format/tar.lux
index 9de7d8ca9..ec8c7f373 100644
--- a/stdlib/source/documentation/lux/data/format/tar.lux
+++ b/stdlib/source/documentation/lux/data/format/tar.lux
@@ -8,79 +8,80 @@
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.not_a_small_number)
-             ($.definition /.small_limit)
-             ($.definition /.Small)
-             ($.definition /.small)
-             ($.definition /.from_small)
+(def .public documentation
+  (List $.Documentation)
+  (list ($.module /._
+                  "")
 
-             ($.definition /.not_a_big_number)
-             ($.definition /.big_limit)
-             ($.definition /.Big)
-             ($.definition /.big)
-             ($.definition /.from_big)
+        ($.definition /.not_a_small_number)
+        ($.definition /.small_limit)
+        ($.definition /.Small)
+        ($.definition /.small)
+        ($.definition /.from_small)
 
-             ($.definition /.wrong_character)
-             ($.definition /.not_ascii)
-             ($.definition /.name_size)
-             ($.definition /.path_size)
+        ($.definition /.not_a_big_number)
+        ($.definition /.big_limit)
+        ($.definition /.Big)
+        ($.definition /.big)
+        ($.definition /.from_big)
 
-             ($.definition /.Name)
-             ($.definition /.name_is_too_long)
-             ($.definition /.name)
-             ($.definition /.from_name)
-             ($.definition /.anonymous)
+        ($.definition /.wrong_character)
+        ($.definition /.not_ascii)
+        ($.definition /.name_size)
+        ($.definition /.path_size)
 
-             ($.definition /.Path)
-             ($.definition /.path_is_too_long)
-             ($.definition /.path)
-             ($.definition /.from_path)
-             ($.definition /.no_path)
+        ($.definition /.Name)
+        ($.definition /.name_is_too_long)
+        ($.definition /.name)
+        ($.definition /.from_name)
+        ($.definition /.anonymous)
 
-             ($.definition /.invalid_link_flag)
-             ($.definition /.Mode)
-             ($.definition /.mode)
-             ($.definition /.and)
-             ($.definition /.invalid_mode)
+        ($.definition /.Path)
+        ($.definition /.path_is_too_long)
+        ($.definition /.path)
+        ($.definition /.from_path)
+        ($.definition /.no_path)
 
-             ($.definition /.none)
-             
-             ($.definition /.execute_by_other)
-             ($.definition /.write_by_other)
-             ($.definition /.read_by_other)
+        ($.definition /.invalid_link_flag)
+        ($.definition /.Mode)
+        ($.definition /.mode)
+        ($.definition /.and)
+        ($.definition /.invalid_mode)
 
-             ($.definition /.execute_by_group)
-             ($.definition /.write_by_group)
-             ($.definition /.read_by_group)
+        ($.definition /.none)
+        
+        ($.definition /.execute_by_other)
+        ($.definition /.write_by_other)
+        ($.definition /.read_by_other)
 
-             ($.definition /.execute_by_owner)
-             ($.definition /.write_by_owner)
-             ($.definition /.read_by_owner)
+        ($.definition /.execute_by_group)
+        ($.definition /.write_by_group)
+        ($.definition /.read_by_group)
 
-             ($.definition /.save_text)
-             ($.definition /.set_group_id_on_execution)
-             ($.definition /.set_user_id_on_execution)
-             
-             ($.definition /.Content)
-             ($.definition /.content)
-             ($.definition /.data)
-             ($.definition /.ID)
-             ($.definition /.no_id)
-             ($.definition /.Owner)
-             ($.definition /.Ownership)
-             ($.definition /.File)
-             ($.definition /.Normal)
-             ($.definition /.Symbolic_Link)
-             ($.definition /.Directory)
-             ($.definition /.Contiguous)
-             ($.definition /.Entry)
-             ($.definition /.Tar)
-             ($.definition /.format)
-             ($.definition /.wrong_checksum)
-             ($.definition /.invalid_end_of_archive)
-             ($.definition /.parser)]
-            []))
+        ($.definition /.execute_by_owner)
+        ($.definition /.write_by_owner)
+        ($.definition /.read_by_owner)
+
+        ($.definition /.save_text)
+        ($.definition /.set_group_id_on_execution)
+        ($.definition /.set_user_id_on_execution)
+        
+        ($.definition /.Content)
+        ($.definition /.content)
+        ($.definition /.data)
+        ($.definition /.ID)
+        ($.definition /.no_id)
+        ($.definition /.Owner)
+        ($.definition /.Ownership)
+        ($.definition /.File)
+        ($.definition /.Normal)
+        ($.definition /.Symbolic_Link)
+        ($.definition /.Directory)
+        ($.definition /.Contiguous)
+        ($.definition /.Entry)
+        ($.definition /.Tar)
+        ($.definition /.format)
+        ($.definition /.wrong_checksum)
+        ($.definition /.invalid_end_of_archive)
+        ($.definition /.parser)
+        ))
diff --git a/stdlib/source/documentation/lux/data/format/xml.lux b/stdlib/source/documentation/lux/data/format/xml.lux
index 60c2841e9..22c80ea1f 100644
--- a/stdlib/source/documentation/lux/data/format/xml.lux
+++ b/stdlib/source/documentation/lux/data/format/xml.lux
@@ -4,70 +4,76 @@
    ["$" documentation]
    [data
     [text (.only \n)
-     ["%" \\format (.only format)]]]]]
+     ["%" \\format (.only format)]]
+    [collection
+     ["[0]" list]]]]]
  ["[0]" \\parser]
  [\\library
   ["[0]" /]])
 
-(.def \\parser
-  (.List $.Module)
-  ($.module \\parser._
-            ""
-            [($.definition \\parser.empty_input)
-             ($.definition \\parser.unexpected_input)
-             ($.definition \\parser.wrong_tag)
-             ($.definition \\parser.unknown_attribute)
-             ($.definition \\parser.unconsumed_inputs)
-             ($.definition \\parser.nowhere)
-
-             ($.definition (\\parser.Parser it)
-               "A parser of XML-encoded data.")
-
-             ($.definition \\parser.result
-               (format "Applies a parser against a stream of XML documents."
-                       \n "Verifies that all of the inputs are consumed by the parser.")
-               [(result parser documents)])
-
-             ($.definition \\parser.text
-               "Yields text from a text node.")
-
-             ($.definition \\parser.tag
-               "Yields the tag from the next node.")
-
-             ($.definition \\parser.attribute
-               "Yields the value of an attribute in the current node."
-               [(attribute name)])
-
-             ($.definition \\parser.node
-               "Parses the contents of the next node if the tag matches."
-               [(node expected parser)])
-
-             ($.definition \\parser.any
-               "Yields the next node.")
-
-             ($.definition \\parser.somewhere
-               "Applies the parser somewhere among the remaining inputs; instead of demanding that the parser succeeds against the immediate inputs."
-               [(somewhere parser)])]
-            []))
-
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.Tag)
-             ($.definition /.Attribute)
-             ($.definition /.Attrs)
-             ($.definition /.XML)
-             ($.definition /.codec)
-             ($.definition /.equivalence)
-
-             ($.definition /.attributes
-               "An empty set of XML attributes.")
-
-             ($.definition /.tag
-               "The text format of a XML tag."
-               [(tag name)])
-
-             ($.definition /.attribute
-               "The text format of a XML attribute.")]
-            [..\\parser]))
+(def \\parser
+  (List $.Documentation)
+  (list ($.module \\parser._
+                  "")
+
+        ($.definition \\parser.empty_input)
+        ($.definition \\parser.unexpected_input)
+        ($.definition \\parser.wrong_tag)
+        ($.definition \\parser.unknown_attribute)
+        ($.definition \\parser.unconsumed_inputs)
+        ($.definition \\parser.nowhere)
+
+        ($.definition (\\parser.Parser it)
+          "A parser of XML-encoded data.")
+
+        ($.definition \\parser.result
+          (format "Applies a parser against a stream of XML documents."
+                  \n "Verifies that all of the inputs are consumed by the parser.")
+          [(result parser documents)])
+
+        ($.definition \\parser.text
+          "Yields text from a text node.")
+
+        ($.definition \\parser.tag
+          "Yields the tag from the next node.")
+
+        ($.definition \\parser.attribute
+          "Yields the value of an attribute in the current node."
+          [(attribute name)])
+
+        ($.definition \\parser.node
+          "Parses the contents of the next node if the tag matches."
+          [(node expected parser)])
+
+        ($.definition \\parser.any
+          "Yields the next node.")
+
+        ($.definition \\parser.somewhere
+          "Applies the parser somewhere among the remaining inputs; instead of demanding that the parser succeeds against the immediate inputs."
+          [(somewhere parser)])
+        ))
+
+(def .public documentation
+  (List $.Documentation)
+  (list.partial ($.module /._
+                          "")
+
+                ($.definition /.Tag)
+                ($.definition /.Attribute)
+                ($.definition /.Attrs)
+                ($.definition /.XML)
+                ($.definition /.codec)
+                ($.definition /.equivalence)
+
+                ($.definition /.attributes
+                  "An empty set of XML attributes.")
+
+                ($.definition /.tag
+                  "The text format of a XML tag."
+                  [(tag name)])
+
+                ($.definition /.attribute
+                  "The text format of a XML attribute.")
+
+                ..\\parser
+                ))
diff --git a/stdlib/source/documentation/lux/data/identity.lux b/stdlib/source/documentation/lux/data/identity.lux
index acf3d9bed..c150d7d97 100644
--- a/stdlib/source/documentation/lux/data/identity.lux
+++ b/stdlib/source/documentation/lux/data/identity.lux
@@ -1,6 +1,6 @@
 (.require
  [library
-  [lux (.except nat int rev list or and)
+  [lux (.except)
    ["$" documentation]
    [data
     [text (.only \n)
@@ -8,15 +8,16 @@
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.functor)
-             ($.definition /.apply)
-             ($.definition /.monad)
-             ($.definition /.comonad)
+(def .public documentation
+  (List $.Documentation)
+  (list ($.module /._
+                  "")
 
-             ($.definition (/.Identity it)
-               "A value, as is, without any extra structure super-imposed on it.")]
-            []))
+        ($.definition /.functor)
+        ($.definition /.apply)
+        ($.definition /.monad)
+        ($.definition /.comonad)
+
+        ($.definition (/.Identity it)
+          "A value, as is, without any extra structure super-imposed on it.")
+        ))
diff --git a/stdlib/source/documentation/lux/data/product.lux b/stdlib/source/documentation/lux/data/product.lux
index 05cb39ca8..a589fdd9c 100644
--- a/stdlib/source/documentation/lux/data/product.lux
+++ b/stdlib/source/documentation/lux/data/product.lux
@@ -1,6 +1,6 @@
 (.require
  [library
-  [lux (.except left right)
+  [lux (.except)
    ["$" documentation]
    [data
     [text
@@ -8,36 +8,37 @@
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            "Functionality for working with tuples (particularly 2-tuples/pairs)."
-            [($.definition /.equivalence)
-             ($.definition /.hash)
+(def .public documentation
+  (List $.Documentation)
+  (list ($.module /._
+                  "Functionality for working with tuples (particularly 2-tuples/pairs).")
 
-             ($.definition /.left
-               "The left side of a pair.")
+        ($.definition /.equivalence)
+        ($.definition /.hash)
 
-             ($.definition /.right
-               "The right side of a pair.")
+        ($.definition /.left
+          "The left side of a pair.")
 
-             ($.definition /.curried
-               "Converts a 2-argument function into nested single-argument functions."
-               [(curried f)])
+        ($.definition /.right
+          "The right side of a pair.")
 
-             ($.definition /.uncurried
-               "Converts nested single-argument functions into a 2-argument function."
-               [(uncurried f)])
+        ($.definition /.curried
+          "Converts a 2-argument function into nested single-argument functions."
+          [(curried f)])
 
-             ($.definition /.swapped
-               ""
-               [(swapped [left right])])
+        ($.definition /.uncurried
+          "Converts nested single-argument functions into a 2-argument function."
+          [(uncurried f)])
 
-             ($.definition /.then
-               "Apply functions to both sides of a pair."
-               [(then f g)])
+        ($.definition /.swapped
+          ""
+          [(swapped [left right])])
 
-             ($.definition /.forked
-               "Yields a pair by applying both functions to a single value."
-               [(forked f g)])]
-            []))
+        ($.definition /.then
+          "Apply functions to both sides of a pair."
+          [(then f g)])
+
+        ($.definition /.forked
+          "Yields a pair by applying both functions to a single value."
+          [(forked f g)])
+        ))
diff --git a/stdlib/source/documentation/lux/data/sum.lux b/stdlib/source/documentation/lux/data/sum.lux
index b7a41851d..973522394 100644
--- a/stdlib/source/documentation/lux/data/sum.lux
+++ b/stdlib/source/documentation/lux/data/sum.lux
@@ -1,6 +1,6 @@
 (.require
  [library
-  [lux (.except left right)
+  [lux (.except)
    ["$" documentation]
    [data
     [text (.only \n)
@@ -8,27 +8,28 @@
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            "Functionality for working with variants (particularly 2-variants)."
-            [($.definition /.lefts)
-             ($.definition /.rights)
-             ($.definition /.partition)
-             ($.definition /.equivalence)
-             ($.definition /.hash)
+(def .public documentation
+  (List $.Documentation)
+  (list ($.module /._
+                  "Functionality for working with variants (particularly 2-variants).")
 
-             ($.definition /.left
-               "Lifts value to the left side of a 2-variant.")
+        ($.definition /.lefts)
+        ($.definition /.rights)
+        ($.definition /.partition)
+        ($.definition /.equivalence)
+        ($.definition /.hash)
 
-             ($.definition /.right
-               "Lifts value to the right side of a 2-variant.")
+        ($.definition /.left
+          "Lifts value to the left side of a 2-variant.")
 
-             ($.definition /.either
-               "Applies a function to either side of a 2-variant."
-               [(either on_left on_right)])
+        ($.definition /.right
+          "Lifts value to the right side of a 2-variant.")
 
-             ($.definition /.then
-               "Applies functions to both sides of a 2-variant."
-               [(then on_left on_right)])]
-            []))
+        ($.definition /.either
+          "Applies a function to either side of a 2-variant."
+          [(either on_left on_right)])
+
+        ($.definition /.then
+          "Applies functions to both sides of a 2-variant."
+          [(then on_left on_right)])
+        ))
diff --git a/stdlib/source/documentation/lux/data/text.lux b/stdlib/source/documentation/lux/data/text.lux
index f5271ed99..10b2616a7 100644
--- a/stdlib/source/documentation/lux/data/text.lux
+++ b/stdlib/source/documentation/lux/data/text.lux
@@ -2,6 +2,9 @@
  [library
   [lux (.except)
    ["$" documentation]
+   [data
+    [collection
+     ["[0]" list (.use "[1]#[0]" monoid)]]]
    [meta
     [macro
      ["[0]" template]]]]]
@@ -16,352 +19,359 @@
  [\\library
   ["[0]" / (.only \n)]])
 
-(.def \\format
-  (.List $.Module)
-  ($.module \\format._
-            ""
-            [($.definition \\format.functor)
-
-             ($.definition \\format.bit)
-             ($.definition \\format.nat)
-             ($.definition \\format.int)
-             ($.definition \\format.rev)
-             ($.definition \\format.frac)
-             ($.definition \\format.text)
-             
-             ($.definition \\format.ratio)
-             ($.definition \\format.symbol)
-             ($.definition \\format.location)
-             ($.definition \\format.code)
-             ($.definition \\format.type)
-             
-             ($.definition \\format.instant)
-             ($.definition \\format.duration)
-             ($.definition \\format.date)
-             ($.definition \\format.time)
-             ($.definition \\format.day)
-             ($.definition \\format.month)
-             
-             ($.definition \\format.xml)
-             ($.definition \\format.json)
-
-             ($.definition \\format.nat_2)
-             ($.definition \\format.nat_8)
-             ($.definition \\format.nat_10)
-             ($.definition \\format.nat_16)
-             ($.definition \\format.int_2)
-             ($.definition \\format.int_8)
-             ($.definition \\format.int_10)
-             ($.definition \\format.int_16)
-             ($.definition \\format.rev_2)
-             ($.definition \\format.rev_8)
-             ($.definition \\format.rev_10)
-             ($.definition \\format.rev_16)
-             ($.definition \\format.frac_2)
-             ($.definition \\format.frac_8)
-             ($.definition \\format.frac_10)
-             ($.definition \\format.frac_16)
-             
-             ($.definition \\format.mod)
-             ($.definition \\format.list)
-             ($.definition \\format.maybe)
-
-             ($.definition (\\format.Format it)
-               "A way to produce readable text from values.")
-
-             ($.definition \\format.format
-               "Text interpolation."
-               [(format "Static part " (text static) " does not match URI: " uri)])]
-            []))
-
-(`` (.def \\parser
-      (.List $.Module)
-      ($.module \\parser._
-                ""
-                [($.definition \\parser.unconsumed_input)
-                 ($.definition \\parser.expected_to_fail)
-                 ($.definition \\parser.cannot_parse)
-                 ($.definition \\parser.cannot_slice)
-                 ($.definition \\parser.cannot_match)
-                 ($.definition \\parser.character_should_be)
-                 ($.definition \\parser.character_should_not_be)
-                 ($.definition \\parser.character_does_not_satisfy_predicate)
-
-                 ($.definition \\parser.Offset
-                   "An offset into a block of text.")
-
-                 ($.definition (\\parser.Parser it)
-                   "A parser for text.")
-
-                 ($.definition \\parser.Slice
-                   "A slice of a block of text.")
-
-                 ($.definition \\parser.result
-                   (format "Executes a parser against a block of text."
-                           \n "Verifies that the entire input has been processed.")
-                   [(result parser input)])
-
-                 ($.definition \\parser.offset
-                   "Yields the current offset into the input.")
-
-                 ($.definition \\parser.any
-                   "Yields the next character without applying any logic.")
-
-                 ($.definition \\parser.any!
-                   "Yields the next character (as a slice) without applying any logic.")
-
-                 (,, (with_template [<name> <caveat>]
-                       [(`` ($.definition <name>
-                              (format "Produce a character" (,, (template.text [<caveat>])) " if the parser fails.")))]
-
-                       [\\parser.not  ""]
-                       [\\parser.not! " (as a slice)"]
-                       ))
-
-                 ($.definition \\parser.this
-                   "Checks that a specific text shows up in the input."
-                   [(this reference)])
-
-                 ($.definition \\parser.end
-                   "Ensure the parser's input is empty.")
-
-                 ($.definition \\parser.next
-                   "Yields the next character (without consuming it from the input).")
-
-                 ($.definition \\parser.remaining
-                   "Get all of the remaining input (without consuming it).")
-
-                 ($.definition \\parser.range
-                   "Only yields characters within a range."
-                   [(range bottom top)])
-
-                 (,, (with_template [<name> <desc>]
-                       [($.definition <name>
-                          (format "Only yields " <desc> " characters."))]
-
-                       [\\parser.upper "uppercase"]
-                       [\\parser.lower "lowercase"]
-                       [\\parser.decimal "decimal"]
-                       [\\parser.octal "octal"]
-                       ))
-
-                 ($.definition \\parser.alpha
-                   "Yields alphabetic characters.")
-
-                 ($.definition \\parser.alpha_num
-                   "Yields alphanumeric characters.")
-
-                 ($.definition \\parser.hexadecimal
-                   "Yields hexadecimal digits.")
-
-                 (,, (with_template [<name> <description_modifier>]
-                       [($.definition <name>
-                          (format "Yields characters that are" <description_modifier> " part of a piece of text."))]
-
-                       [\\parser.one_of ""]
-                       [\\parser.none_of " not"]
-                       ))
-
-                 (,, (with_template [<name> <description_modifier>]
-                       [($.definition <name>
-                          (format "Yields characters (as a slice) that are" <description_modifier> " part of a piece of text."))]
-
-                       [\\parser.one_of! ""]
-                       [\\parser.none_of! " not"]
-                       ))
-
-                 ($.definition \\parser.satisfies
-                   "Yields characters that satisfy a predicate."
-                   [(satisfies parser)])
-
-                 ($.definition \\parser.space
-                   "Yields white-space.")
-
-                 ($.definition \\parser.and
-                   "Yields the outputs of both parsers composed together."
-                   [(and left right)])
-
-                 ($.definition \\parser.and!
-                   "Yields the outputs of both parsers composed together (as a slice)."
-                   [(and! left right)])
-
-                 (,, (with_template [<text> <slice>]
-                       [(`` ($.definition <text>
-                              (format "Yields " (,, (template.text [<name>])) " characters as a single continuous text.")))
-                        (`` ($.definition <slice>
-                              (format "Yields " (,, (template.text [<name>])) " characters as a single continuous text (as a slice).")))]
-
-                       [\\parser.some \\parser.some!]
-                       [\\parser.many \\parser.many!]
-                       ))
-
-                 (,, (with_template [<text> <slice> <doc_modifier>]
-                       [(`` ($.definition <text>
-                              (format "Yields " <doc_modifier> " N characters.")))
-                        (`` ($.definition <slice>
-                              (format "Yields " <doc_modifier> " N characters (as a slice).")))]
-
-                       [\\parser.exactly  \\parser.exactly!  "exactly"]
-                       [\\parser.at_most  \\parser.at_most!  "at most"]
-                       [\\parser.at_least \\parser.at_least! "at least"]
-                       ))
-
-                 ($.definition \\parser.between
-                   ""
-                   [(between minimum additional parser)])
-
-                 ($.definition \\parser.between!
-                   ""
-                   [(between! minimum additional parser)])
-
-                 ($.definition \\parser.enclosed
-                   ""
-                   [(enclosed [start end] parser)])
-
-                 ($.definition \\parser.local
-                   "Applies a parser against the given input."
-                   [(local local_input parser)])
-
-                 ($.definition \\parser.slice
-                   "Converts a slice to a block of text."
-                   [(slice parser)])
-
-                 ($.definition \\parser.then
-                   "Embeds a text parser into an arbitrary parser that yields text."
-                   [(then structured text)])]
-                [])))
-
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.of_char)
-
-             ($.definition /.\0)
-             ($.definition /.null)
-             ($.definition /.\a)
-             ($.definition /.alarm)
-             ($.definition /.\b)
-             ($.definition /.back_space)
-             ($.definition /.\t)
-             ($.definition /.tab)
-             ($.definition /.\n)
-             ($.definition /.new_line)
-             ($.definition /.\v)
-             ($.definition /.vertical_tab)
-             ($.definition /.\f)
-             ($.definition /.form_feed)
-             ($.definition /.\r)
-             ($.definition /.carriage_return)
-             ($.definition /.\'')
-             ($.definition /.double_quote)
-             
-             ($.definition /.size)
-             ($.definition /.format)
-             ($.definition /.equivalence)
-             ($.definition /.order)
-             ($.definition /.monoid)
-             ($.definition /.hash)
-             ($.definition /.together)
-             ($.definition /.empty?)
-             ($.definition /.space)
-             ($.definition /.lower_cased)
-             ($.definition /.upper_cased)
-
-             ($.definition /.Char
-               "A character code number.")
-
-             ($.definition /.line_feed
-               "Same as 'new_line'.")
-
-             ($.definition /.char
-               "Yields the character at the specified index."
-               [(char index input)])
-
-             ($.definition /.index_since
-               ""
-               [(index_since from pattern input)])
-
-             ($.definition /.index
-               ""
-               [(index pattern input)])
-
-             ($.definition /.last_index
-               ""
-               [(last_index part text)])
-
-             ($.definition /.starts_with?
-               ""
-               [(starts_with? prefix x)])
-
-             ($.definition /.ends_with?
-               ""
-               [(ends_with? postfix x)])
-
-             ($.definition /.enclosed_by?
-               ""
-               [(enclosed_by? boundary value)])
-
-             ($.definition /.contains?
-               ""
-               [(contains? sub text)])
-
-             ($.definition /.prefix
-               ""
-               [(prefix param subject)])
-
-             ($.definition /.suffix
-               ""
-               [(suffix param subject)])
-
-             ($.definition /.enclosed
-               "Surrounds the given content text with left and right side additions."
-               [(enclosed [left right] content)])
-
-             ($.definition /.enclosed'
-               "Surrounds the given content text with the same boundary text."
-               [(enclosed' boundary content)])
-
-             ($.definition /.clip
-               "Clips a chunk of text from the input at the specified offset and of the specified size."
-               [(clip offset size input)])
-
-             ($.definition /.clip_since
-               "Clips the remaining text from the input at the specified offset."
-               [(clip_since offset input)])
-
-             ($.definition /.split_at
-               ""
-               [(split_at at x)])
-
-             ($.definition /.split_by
-               ""
-               [(split_by token sample)])
-
-             ($.definition /.all_split_by
-               ""
-               [(all_split_by token sample)])
-
-             ($.definition /.replaced_once
-               ""
-               [(replaced_once pattern replacement template)])
-
-             ($.definition /.replaced
-               ""
-               [(replaced pattern replacement template)])
-
-             ($.definition /.interposed
-               ""
-               [(interposed separator texts)])
-
-             ($.definition /.space?
-               "Checks whether the character is white-space."
-               [(space? char)])]
-            [..\\format
-             ..\\parser
-             
-             /buffer.documentation
-             /encoding.documentation
-             /escape.documentation
-             /regex.documentation
-             /unicode.documentation]))
+(def \\format
+  (List $.Documentation)
+  (list ($.module \\format._
+                  "")
+
+        ($.definition \\format.functor)
+
+        ($.definition \\format.bit)
+        ($.definition \\format.nat)
+        ($.definition \\format.int)
+        ($.definition \\format.rev)
+        ($.definition \\format.frac)
+        ($.definition \\format.text)
+        
+        ($.definition \\format.ratio)
+        ($.definition \\format.symbol)
+        ($.definition \\format.location)
+        ($.definition \\format.code)
+        ($.definition \\format.type)
+        
+        ($.definition \\format.instant)
+        ($.definition \\format.duration)
+        ($.definition \\format.date)
+        ($.definition \\format.time)
+        ($.definition \\format.day)
+        ($.definition \\format.month)
+        
+        ($.definition \\format.xml)
+        ($.definition \\format.json)
+
+        ($.definition \\format.nat_2)
+        ($.definition \\format.nat_8)
+        ($.definition \\format.nat_10)
+        ($.definition \\format.nat_16)
+        ($.definition \\format.int_2)
+        ($.definition \\format.int_8)
+        ($.definition \\format.int_10)
+        ($.definition \\format.int_16)
+        ($.definition \\format.rev_2)
+        ($.definition \\format.rev_8)
+        ($.definition \\format.rev_10)
+        ($.definition \\format.rev_16)
+        ($.definition \\format.frac_2)
+        ($.definition \\format.frac_8)
+        ($.definition \\format.frac_10)
+        ($.definition \\format.frac_16)
+        
+        ($.definition \\format.mod)
+        ($.definition \\format.list)
+        ($.definition \\format.maybe)
+
+        ($.definition (\\format.Format it)
+          "A way to produce readable text from values.")
+
+        ($.definition \\format.format
+          "Text interpolation."
+          [(format "Static part " (text static) " does not match URI: " uri)])
+        ))
+
+(`` (def \\parser
+      (List $.Documentation)
+      (list ($.module \\parser._
+                      "")
+
+            ($.definition \\parser.unconsumed_input)
+            ($.definition \\parser.expected_to_fail)
+            ($.definition \\parser.cannot_parse)
+            ($.definition \\parser.cannot_slice)
+            ($.definition \\parser.cannot_match)
+            ($.definition \\parser.character_should_be)
+            ($.definition \\parser.character_should_not_be)
+            ($.definition \\parser.character_does_not_satisfy_predicate)
+
+            ($.definition \\parser.Offset
+              "An offset into a block of text.")
+
+            ($.definition (\\parser.Parser it)
+              "A parser for text.")
+
+            ($.definition \\parser.Slice
+              "A slice of a block of text.")
+
+            ($.definition \\parser.result
+              (format "Executes a parser against a block of text."
+                      \n "Verifies that the entire input has been processed.")
+              [(result parser input)])
+
+            ($.definition \\parser.offset
+              "Yields the current offset into the input.")
+
+            ($.definition \\parser.any
+              "Yields the next character without applying any logic.")
+
+            ($.definition \\parser.any!
+              "Yields the next character (as a slice) without applying any logic.")
+
+            (,, (with_template [<name> <caveat>]
+                  [(`` ($.definition <name>
+                         (format "Produce a character" (,, (template.text [<caveat>])) " if the parser fails.")))]
+
+                  [\\parser.not  ""]
+                  [\\parser.not! " (as a slice)"]
+                  ))
+
+            ($.definition \\parser.this
+              "Checks that a specific text shows up in the input."
+              [(this reference)])
+
+            ($.definition \\parser.end
+              "Ensure the parser's input is empty.")
+
+            ($.definition \\parser.next
+              "Yields the next character (without consuming it from the input).")
+
+            ($.definition \\parser.remaining
+              "Get all of the remaining input (without consuming it).")
+
+            ($.definition \\parser.range
+              "Only yields characters within a range."
+              [(range bottom top)])
+
+            (,, (with_template [<name> <desc>]
+                  [($.definition <name>
+                     (format "Only yields " <desc> " characters."))]
+
+                  [\\parser.upper "uppercase"]
+                  [\\parser.lower "lowercase"]
+                  [\\parser.decimal "decimal"]
+                  [\\parser.octal "octal"]
+                  ))
+
+            ($.definition \\parser.alpha
+              "Yields alphabetic characters.")
+
+            ($.definition \\parser.alpha_num
+              "Yields alphanumeric characters.")
+
+            ($.definition \\parser.hexadecimal
+              "Yields hexadecimal digits.")
+
+            (,, (with_template [<name> <description_modifier>]
+                  [($.definition <name>
+                     (format "Yields characters that are" <description_modifier> " part of a piece of text."))]
+
+                  [\\parser.one_of ""]
+                  [\\parser.none_of " not"]
+                  ))
+
+            (,, (with_template [<name> <description_modifier>]
+                  [($.definition <name>
+                     (format "Yields characters (as a slice) that are" <description_modifier> " part of a piece of text."))]
+
+                  [\\parser.one_of! ""]
+                  [\\parser.none_of! " not"]
+                  ))
+
+            ($.definition \\parser.satisfies
+              "Yields characters that satisfy a predicate."
+              [(satisfies parser)])
+
+            ($.definition \\parser.space
+              "Yields white-space.")
+
+            ($.definition \\parser.and
+              "Yields the outputs of both parsers composed together."
+              [(and left right)])
+
+            ($.definition \\parser.and!
+              "Yields the outputs of both parsers composed together (as a slice)."
+              [(and! left right)])
+
+            (,, (with_template [<text> <slice>]
+                  [(`` ($.definition <text>
+                         (format "Yields " (,, (template.text [<name>])) " characters as a single continuous text.")))
+                   (`` ($.definition <slice>
+                         (format "Yields " (,, (template.text [<name>])) " characters as a single continuous text (as a slice).")))]
+
+                  [\\parser.some \\parser.some!]
+                  [\\parser.many \\parser.many!]
+                  ))
+
+            (,, (with_template [<text> <slice> <doc_modifier>]
+                  [(`` ($.definition <text>
+                         (format "Yields " <doc_modifier> " N characters.")))
+                   (`` ($.definition <slice>
+                         (format "Yields " <doc_modifier> " N characters (as a slice).")))]
+
+                  [\\parser.exactly  \\parser.exactly!  "exactly"]
+                  [\\parser.at_most  \\parser.at_most!  "at most"]
+                  [\\parser.at_least \\parser.at_least! "at least"]
+                  ))
+
+            ($.definition \\parser.between
+              ""
+              [(between minimum additional parser)])
+
+            ($.definition \\parser.between!
+              ""
+              [(between! minimum additional parser)])
+
+            ($.definition \\parser.enclosed
+              ""
+              [(enclosed [start end] parser)])
+
+            ($.definition \\parser.local
+              "Applies a parser against the given input."
+              [(local local_input parser)])
+
+            ($.definition \\parser.slice
+              "Converts a slice to a block of text."
+              [(slice parser)])
+
+            ($.definition \\parser.then
+              "Embeds a text parser into an arbitrary parser that yields text."
+              [(then structured text)])
+            )))
+
+(def .public documentation
+  (List $.Documentation)
+  (list.partial ($.module /._
+                          "")
+
+                ($.definition /.of_char)
+
+                ($.definition /.\0)
+                ($.definition /.null)
+                ($.definition /.\a)
+                ($.definition /.alarm)
+                ($.definition /.\b)
+                ($.definition /.back_space)
+                ($.definition /.\t)
+                ($.definition /.tab)
+                ($.definition /.\n)
+                ($.definition /.new_line)
+                ($.definition /.\v)
+                ($.definition /.vertical_tab)
+                ($.definition /.\f)
+                ($.definition /.form_feed)
+                ($.definition /.\r)
+                ($.definition /.carriage_return)
+                ($.definition /.\'')
+                ($.definition /.double_quote)
+                
+                ($.definition /.size)
+                ($.definition /.format)
+                ($.definition /.equivalence)
+                ($.definition /.order)
+                ($.definition /.monoid)
+                ($.definition /.hash)
+                ($.definition /.together)
+                ($.definition /.empty?)
+                ($.definition /.space)
+                ($.definition /.lower_cased)
+                ($.definition /.upper_cased)
+
+                ($.definition /.Char
+                  "A character code number.")
+
+                ($.definition /.line_feed
+                  "Same as 'new_line'.")
+
+                ($.definition /.char
+                  "Yields the character at the specified index."
+                  [(char index input)])
+
+                ($.definition /.index_since
+                  ""
+                  [(index_since from pattern input)])
+
+                ($.definition /.index
+                  ""
+                  [(index pattern input)])
+
+                ($.definition /.last_index
+                  ""
+                  [(last_index part text)])
+
+                ($.definition /.starts_with?
+                  ""
+                  [(starts_with? prefix x)])
+
+                ($.definition /.ends_with?
+                  ""
+                  [(ends_with? postfix x)])
+
+                ($.definition /.enclosed_by?
+                  ""
+                  [(enclosed_by? boundary value)])
+
+                ($.definition /.contains?
+                  ""
+                  [(contains? sub text)])
+
+                ($.definition /.prefix
+                  ""
+                  [(prefix param subject)])
+
+                ($.definition /.suffix
+                  ""
+                  [(suffix param subject)])
+
+                ($.definition /.enclosed
+                  "Surrounds the given content text with left and right side additions."
+                  [(enclosed [left right] content)])
+
+                ($.definition /.enclosed'
+                  "Surrounds the given content text with the same boundary text."
+                  [(enclosed' boundary content)])
+
+                ($.definition /.clip
+                  "Clips a chunk of text from the input at the specified offset and of the specified size."
+                  [(clip offset size input)])
+
+                ($.definition /.clip_since
+                  "Clips the remaining text from the input at the specified offset."
+                  [(clip_since offset input)])
+
+                ($.definition /.split_at
+                  ""
+                  [(split_at at x)])
+
+                ($.definition /.split_by
+                  ""
+                  [(split_by token sample)])
+
+                ($.definition /.all_split_by
+                  ""
+                  [(all_split_by token sample)])
+
+                ($.definition /.replaced_once
+                  ""
+                  [(replaced_once pattern replacement template)])
+
+                ($.definition /.replaced
+                  ""
+                  [(replaced pattern replacement template)])
+
+                ($.definition /.interposed
+                  ""
+                  [(interposed separator texts)])
+
+                ($.definition /.space?
+                  "Checks whether the character is white-space."
+                  [(space? char)])
+
+                (all list#composite
+                     ..\\format
+                     ..\\parser
+                     
+                     /buffer.documentation
+                     /encoding.documentation
+                     /escape.documentation
+                     /regex.documentation
+                     /unicode.documentation
+                     )
+                ))
diff --git a/stdlib/source/documentation/lux/data/text/buffer.lux b/stdlib/source/documentation/lux/data/text/buffer.lux
index 6c8fc5c5f..be0eff147 100644
--- a/stdlib/source/documentation/lux/data/text/buffer.lux
+++ b/stdlib/source/documentation/lux/data/text/buffer.lux
@@ -8,15 +8,16 @@
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.empty)
-             ($.definition /.then)
-             ($.definition /.size)
-             ($.definition /.text)
+(def .public documentation
+  (List $.Documentation)
+  (list ($.module /._
+                  "")
 
-             ($.definition /.Buffer
-               "Immutable text buffer for efficient text concatenation.")]
-            []))
+        ($.definition /.empty)
+        ($.definition /.then)
+        ($.definition /.size)
+        ($.definition /.text)
+
+        ($.definition /.Buffer
+          "Immutable text buffer for efficient text concatenation.")
+        ))
diff --git a/stdlib/source/documentation/lux/data/text/encoding.lux b/stdlib/source/documentation/lux/data/text/encoding.lux
index 2acadb26e..e5e324f22 100644
--- a/stdlib/source/documentation/lux/data/text/encoding.lux
+++ b/stdlib/source/documentation/lux/data/text/encoding.lux
@@ -4,167 +4,172 @@
    ["$" documentation]
    [data
     [text (.only \n)
-     ["%" \\format (.only format)]]]]]
+     ["%" \\format (.only format)]]
+    [collection
+     ["[0]" list]]]]]
  [\\library
   ["[0]" /]]
  ["[0]" /
   ["[1][0]" utf8]])
 
-(`` (.def .public documentation
-      (.List $.Module)
-      ($.module /._
-                ""
-                [($.definition /.name)
+(`` (def .public documentation
+      (List $.Documentation)
+      (list.partial ($.module /._
+                              "")
 
-                 ($.definition /.Encoding
-                   "Encoding formats for text.")
+                    ($.definition /.name)
 
-                 (,, (with_template [<name>]
-                       [($.definition <name>
-                          (format "'" (/.name <name>) "' text encoding. "))]
+                    ($.definition /.Encoding
+                      "Encoding formats for text.")
 
-                       [/.ascii]
+                    (,, (with_template [<name>]
+                          [($.definition <name>
+                             (format "'" (/.name <name>) "' text encoding. "))]
 
-                       [/.ibm_037]
-                       [/.ibm_273]
-                       [/.ibm_277]
-                       [/.ibm_278]
-                       [/.ibm_280]
-                       [/.ibm_284]
-                       [/.ibm_285]
-                       [/.ibm_290]
-                       [/.ibm_297]
-                       [/.ibm_300]
-                       [/.ibm_420]
-                       [/.ibm_424]
-                       [/.ibm_437]
-                       [/.ibm_500]
-                       [/.ibm_737]
-                       [/.ibm_775]
-                       [/.ibm_833]
-                       [/.ibm_834]
-                       [/.ibm_838]
-                       [/.ibm_850]
-                       [/.ibm_852]
-                       [/.ibm_855]
-                       [/.ibm_856]
-                       [/.ibm_857]
-                       [/.ibm_858]
-                       [/.ibm_860]
-                       [/.ibm_861]
-                       [/.ibm_862]
-                       [/.ibm_863]
-                       [/.ibm_864]
-                       [/.ibm_865]
-                       [/.ibm_866]
-                       [/.ibm_868]
-                       [/.ibm_869]
-                       [/.ibm_870]
-                       [/.ibm_871]
-                       [/.ibm_874]
-                       [/.ibm_875]
-                       [/.ibm_918]
-                       [/.ibm_921]
-                       [/.ibm_922]
-                       [/.ibm_930]
-                       [/.ibm_933]
-                       [/.ibm_935]
-                       [/.ibm_937]
-                       [/.ibm_939]
-                       [/.ibm_942]
-                       [/.ibm_942c]
-                       [/.ibm_943]
-                       [/.ibm_943c]
-                       [/.ibm_948]
-                       [/.ibm_949]
-                       [/.ibm_949c]
-                       [/.ibm_950]
-                       [/.ibm_964]
-                       [/.ibm_970]
-                       [/.ibm_1006]
-                       [/.ibm_1025]
-                       [/.ibm_1026]
-                       [/.ibm_1046]
-                       [/.ibm_1047]
-                       [/.ibm_1097]
-                       [/.ibm_1098]
-                       [/.ibm_1112]
-                       [/.ibm_1122]
-                       [/.ibm_1123]
-                       [/.ibm_1124]
-                       [/.ibm_1140]
-                       [/.ibm_1141]
-                       [/.ibm_1142]
-                       [/.ibm_1143]
-                       [/.ibm_1144]
-                       [/.ibm_1145]
-                       [/.ibm_1146]
-                       [/.ibm_1147]
-                       [/.ibm_1148]
-                       [/.ibm_1149]
-                       [/.ibm_1166]
-                       [/.ibm_1364]
-                       [/.ibm_1381]
-                       [/.ibm_1383]
-                       [/.ibm_33722]
-                       
-                       [/.iso_2022_cn]
-                       [/.iso2022_cn_cns]
-                       [/.iso2022_cn_gb]
-                       [/.iso_2022_jp]
-                       [/.iso_2022_jp_2]
-                       [/.iso_2022_kr]
-                       [/.iso_8859_1]
-                       [/.iso_8859_2]
-                       [/.iso_8859_3]
-                       [/.iso_8859_4]
-                       [/.iso_8859_5]
-                       [/.iso_8859_6]
-                       [/.iso_8859_7]
-                       [/.iso_8859_8]
-                       [/.iso_8859_9]
-                       [/.iso_8859_11]
-                       [/.iso_8859_13]
-                       [/.iso_8859_15]
+                          [/.ascii]
 
-                       [/.mac_arabic]
-                       [/.mac_central_europe]
-                       [/.mac_croatian]
-                       [/.mac_cyrillic]
-                       [/.mac_dingbat]
-                       [/.mac_greek]
-                       [/.mac_hebrew]
-                       [/.mac_iceland]
-                       [/.mac_roman]
-                       [/.mac_romania]
-                       [/.mac_symbol]
-                       [/.mac_thai]
-                       [/.mac_turkish]
-                       [/.mac_ukraine]
-                       
-                       [/.utf_8]
-                       [/.utf_16]
-                       [/.utf_32]
+                          [/.ibm_037]
+                          [/.ibm_273]
+                          [/.ibm_277]
+                          [/.ibm_278]
+                          [/.ibm_280]
+                          [/.ibm_284]
+                          [/.ibm_285]
+                          [/.ibm_290]
+                          [/.ibm_297]
+                          [/.ibm_300]
+                          [/.ibm_420]
+                          [/.ibm_424]
+                          [/.ibm_437]
+                          [/.ibm_500]
+                          [/.ibm_737]
+                          [/.ibm_775]
+                          [/.ibm_833]
+                          [/.ibm_834]
+                          [/.ibm_838]
+                          [/.ibm_850]
+                          [/.ibm_852]
+                          [/.ibm_855]
+                          [/.ibm_856]
+                          [/.ibm_857]
+                          [/.ibm_858]
+                          [/.ibm_860]
+                          [/.ibm_861]
+                          [/.ibm_862]
+                          [/.ibm_863]
+                          [/.ibm_864]
+                          [/.ibm_865]
+                          [/.ibm_866]
+                          [/.ibm_868]
+                          [/.ibm_869]
+                          [/.ibm_870]
+                          [/.ibm_871]
+                          [/.ibm_874]
+                          [/.ibm_875]
+                          [/.ibm_918]
+                          [/.ibm_921]
+                          [/.ibm_922]
+                          [/.ibm_930]
+                          [/.ibm_933]
+                          [/.ibm_935]
+                          [/.ibm_937]
+                          [/.ibm_939]
+                          [/.ibm_942]
+                          [/.ibm_942c]
+                          [/.ibm_943]
+                          [/.ibm_943c]
+                          [/.ibm_948]
+                          [/.ibm_949]
+                          [/.ibm_949c]
+                          [/.ibm_950]
+                          [/.ibm_964]
+                          [/.ibm_970]
+                          [/.ibm_1006]
+                          [/.ibm_1025]
+                          [/.ibm_1026]
+                          [/.ibm_1046]
+                          [/.ibm_1047]
+                          [/.ibm_1097]
+                          [/.ibm_1098]
+                          [/.ibm_1112]
+                          [/.ibm_1122]
+                          [/.ibm_1123]
+                          [/.ibm_1124]
+                          [/.ibm_1140]
+                          [/.ibm_1141]
+                          [/.ibm_1142]
+                          [/.ibm_1143]
+                          [/.ibm_1144]
+                          [/.ibm_1145]
+                          [/.ibm_1146]
+                          [/.ibm_1147]
+                          [/.ibm_1148]
+                          [/.ibm_1149]
+                          [/.ibm_1166]
+                          [/.ibm_1364]
+                          [/.ibm_1381]
+                          [/.ibm_1383]
+                          [/.ibm_33722]
+                          
+                          [/.iso_2022_cn]
+                          [/.iso2022_cn_cns]
+                          [/.iso2022_cn_gb]
+                          [/.iso_2022_jp]
+                          [/.iso_2022_jp_2]
+                          [/.iso_2022_kr]
+                          [/.iso_8859_1]
+                          [/.iso_8859_2]
+                          [/.iso_8859_3]
+                          [/.iso_8859_4]
+                          [/.iso_8859_5]
+                          [/.iso_8859_6]
+                          [/.iso_8859_7]
+                          [/.iso_8859_8]
+                          [/.iso_8859_9]
+                          [/.iso_8859_11]
+                          [/.iso_8859_13]
+                          [/.iso_8859_15]
 
-                       [/.windows_31j]
-                       [/.windows_874]
-                       [/.windows_949]
-                       [/.windows_950]
-                       [/.windows_1250]
-                       [/.windows_1252]
-                       [/.windows_1251]
-                       [/.windows_1253]
-                       [/.windows_1254]
-                       [/.windows_1255]
-                       [/.windows_1256]
-                       [/.windows_1257]
-                       [/.windows_1258]
-                       [/.windows_iso2022jp]
-                       [/.windows_50220]
-                       [/.windows_50221]
-                       
-                       [/.cesu_8]
-                       [/.koi8_r]
-                       [/.koi8_u]
-                       ))]
-                [/utf8.documentation])))
+                          [/.mac_arabic]
+                          [/.mac_central_europe]
+                          [/.mac_croatian]
+                          [/.mac_cyrillic]
+                          [/.mac_dingbat]
+                          [/.mac_greek]
+                          [/.mac_hebrew]
+                          [/.mac_iceland]
+                          [/.mac_roman]
+                          [/.mac_romania]
+                          [/.mac_symbol]
+                          [/.mac_thai]
+                          [/.mac_turkish]
+                          [/.mac_ukraine]
+                          
+                          [/.utf_8]
+                          [/.utf_16]
+                          [/.utf_32]
+
+                          [/.windows_31j]
+                          [/.windows_874]
+                          [/.windows_949]
+                          [/.windows_950]
+                          [/.windows_1250]
+                          [/.windows_1252]
+                          [/.windows_1251]
+                          [/.windows_1253]
+                          [/.windows_1254]
+                          [/.windows_1255]
+                          [/.windows_1256]
+                          [/.windows_1257]
+                          [/.windows_1258]
+                          [/.windows_iso2022jp]
+                          [/.windows_50220]
+                          [/.windows_50221]
+                          
+                          [/.cesu_8]
+                          [/.koi8_r]
+                          [/.koi8_u]
+                          ))
+
+                    /utf8.documentation
+                    )))
diff --git a/stdlib/source/documentation/lux/data/text/encoding/utf8.lux b/stdlib/source/documentation/lux/data/text/encoding/utf8.lux
index afe5d2b41..7a22b7cf5 100644
--- a/stdlib/source/documentation/lux/data/text/encoding/utf8.lux
+++ b/stdlib/source/documentation/lux/data/text/encoding/utf8.lux
@@ -8,10 +8,11 @@
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.codec
-               "A codec for binary encoding of text as UTF-8.")]
-            []))
+(def .public documentation
+  (List $.Documentation)
+  (list ($.module /._
+                  "")
+
+        ($.definition /.codec
+          "A codec for binary encoding of text as UTF-8.")
+        ))
diff --git a/stdlib/source/documentation/lux/data/text/escape.lux b/stdlib/source/documentation/lux/data/text/escape.lux
index 91c23806d..5b85c8359 100644
--- a/stdlib/source/documentation/lux/data/text/escape.lux
+++ b/stdlib/source/documentation/lux/data/text/escape.lux
@@ -8,28 +8,29 @@
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.escapable?)
-             ($.definition /.dangling_escape)
-             ($.definition /.invalid_escape)
-             ($.definition /.invalid_unicode_escape)
+(def .public documentation
+  (List $.Documentation)
+  (list ($.module /._
+                  "")
 
-             ($.definition /.escaped
-               "Yields a escaped version of the text."
-               [(escaped text)])
+        ($.definition /.escapable?)
+        ($.definition /.dangling_escape)
+        ($.definition /.invalid_escape)
+        ($.definition /.invalid_unicode_escape)
 
-             ($.definition /.un_escaped
-               (format "Yields an un-escaped text."
-                       \n "Fails if it was improperly escaped.")
-               [(un_escaped text)])
+        ($.definition /.escaped
+          "Yields a escaped version of the text."
+          [(escaped text)])
 
-             ($.definition /.literal
-               "If given a escaped text literal, expands to an un-escaped version."
-               [(/.literal "Line 1\nLine 2")
-                "=>"
-                (format "Line 1" \n
-                        "Line 2")])]
-            []))
+        ($.definition /.un_escaped
+          (format "Yields an un-escaped text."
+                  \n "Fails if it was improperly escaped.")
+          [(un_escaped text)])
+
+        ($.definition /.literal
+          "If given a escaped text literal, expands to an un-escaped version."
+          [(/.literal "Line 1\nLine 2")
+           "=>"
+           (format "Line 1" \n
+                   "Line 2")])
+        ))
diff --git a/stdlib/source/documentation/lux/data/text/regex.lux b/stdlib/source/documentation/lux/data/text/regex.lux
index cd8511743..090b88c41 100644
--- a/stdlib/source/documentation/lux/data/text/regex.lux
+++ b/stdlib/source/documentation/lux/data/text/regex.lux
@@ -1,6 +1,6 @@
 (.require
  [library
-  [lux (.except pattern)
+  [lux (.except)
    ["$" documentation]
    [data
     [text (.only \n)
@@ -8,68 +8,69 @@
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.incorrect_quantification)
+(def .public documentation
+  (List $.Documentation)
+  (list ($.module /._
+                  "")
 
-             ($.definition /.regex
-               "Create lexers using regular-expression syntax."
-               ["Literals"
-                (regex "a")]
-               ["Wildcards"
-                (regex ".")]
-               ["Escaping"
-                (regex "\.")]
-               ["Character classes"
-                (regex "\d")
-                (regex "\p{Lower}")
-                (regex "[abc]")
-                (regex "[a-z]")
-                (regex "[a-zA-Z]")
-                (regex "[a-z&&[def]]")]
-               ["Negation"
-                (regex "[^abc]")
-                (regex "[^a-z]")
-                (regex "[^a-zA-Z]")
-                (regex "[a-z&&[^bc]]")
-                (regex "[a-z&&[^m-p]]")]
-               ["Combinations"
-                (regex "aa")
-                (regex "a?")
-                (regex "a*")
-                (regex "a+")]
-               ["Specific amounts"
-                (regex "a{2}")]
-               ["At least"
-                (regex "a{1,}")]
-               ["At most"
-                (regex "a{,1}")]
-               ["Between"
-                (regex "a{1,2}")]
-               ["Groups"
-                (regex "a(.)c")
-                (regex "a(b+)c")
-                (regex "(\d{3})-(\d{3})-(\d{4})")
-                (regex "(\d{3})-(?:\d{3})-(\d{4})")
-                (regex "(?<code>\d{3})-\k<code>-(\d{4})")
-                (regex "(?<code>\d{3})-\k<code>-(\d{4})-\0")
-                (regex "(\d{3})-((\d{3})-(\d{4}))")]
-               ["Alternation"
-                (regex "a|b")
-                (regex "a(.)(.)|b(.)(.)")])
+        ($.definition /.incorrect_quantification)
 
-             ($.definition /.pattern
-               "Allows you to test text against regular expressions."
-               [(case some_text
-                  (pattern "(\d{3})-(\d{3})-(\d{4})"
-                           [_ country_code area_code place_code])
-                  do_some_thing_when_number
+        ($.definition /.regex
+          "Create lexers using regular-expression syntax."
+          ["Literals"
+           (regex "a")]
+          ["Wildcards"
+           (regex ".")]
+          ["Escaping"
+           (regex "\.")]
+          ["Character classes"
+           (regex "\d")
+           (regex "\p{Lower}")
+           (regex "[abc]")
+           (regex "[a-z]")
+           (regex "[a-zA-Z]")
+           (regex "[a-z&&[def]]")]
+          ["Negation"
+           (regex "[^abc]")
+           (regex "[^a-z]")
+           (regex "[^a-zA-Z]")
+           (regex "[a-z&&[^bc]]")
+           (regex "[a-z&&[^m-p]]")]
+          ["Combinations"
+           (regex "aa")
+           (regex "a?")
+           (regex "a*")
+           (regex "a+")]
+          ["Specific amounts"
+           (regex "a{2}")]
+          ["At least"
+           (regex "a{1,}")]
+          ["At most"
+           (regex "a{,1}")]
+          ["Between"
+           (regex "a{1,2}")]
+          ["Groups"
+           (regex "a(.)c")
+           (regex "a(b+)c")
+           (regex "(\d{3})-(\d{3})-(\d{4})")
+           (regex "(\d{3})-(?:\d{3})-(\d{4})")
+           (regex "(?<code>\d{3})-\k<code>-(\d{4})")
+           (regex "(?<code>\d{3})-\k<code>-(\d{4})-\0")
+           (regex "(\d{3})-((\d{3})-(\d{4}))")]
+          ["Alternation"
+           (regex "a|b")
+           (regex "a(.)(.)|b(.)(.)")])
 
-                  (pattern "\w+")
-                  do_some_thing_when_word
+        ($.definition /.pattern
+          "Allows you to test text against regular expressions."
+          [(case some_text
+             (pattern "(\d{3})-(\d{3})-(\d{4})"
+                      [_ country_code area_code place_code])
+             do_some_thing_when_number
 
-                  _
-                  do_something_else)])]
-            []))
+             (pattern "\w+")
+             do_some_thing_when_word
+
+             _
+             do_something_else)])
+        ))
diff --git a/stdlib/source/documentation/lux/data/text/unicode.lux b/stdlib/source/documentation/lux/data/text/unicode.lux
index 6248d9bb9..df6b2a4d9 100644
--- a/stdlib/source/documentation/lux/data/text/unicode.lux
+++ b/stdlib/source/documentation/lux/data/text/unicode.lux
@@ -11,8 +11,8 @@
   ["[1][0]" block]
   ["[1][0]" set]])
 
-(.def .public documentation
-  (.List $.Module)
+(def .public documentation
+  (List $.Documentation)
   (list.together
    (list /block.documentation
          /set.documentation
diff --git a/stdlib/source/documentation/lux/data/text/unicode/block.lux b/stdlib/source/documentation/lux/data/text/unicode/block.lux
index 3c5ea5c8f..7aa0355ab 100644
--- a/stdlib/source/documentation/lux/data/text/unicode/block.lux
+++ b/stdlib/source/documentation/lux/data/text/unicode/block.lux
@@ -11,142 +11,143 @@
  [\\library
   ["[0]" /]])
 
-(`` (.def .public documentation
-      (.List $.Module)
-      ($.module /._
-                ""
-                [($.definition /.monoid)
-                 ($.definition /.start)
-                 ($.definition /.end)
-                 ($.definition /.size)
-                 ($.definition /.equivalence)
-                 ($.definition /.hash)
+(`` (def .public documentation
+      (List $.Documentation)
+      (list ($.module /._
+                      "")
 
-                 ($.definition /.Block
-                   "A block of valid unicode characters.")
+            ($.definition /.monoid)
+            ($.definition /.start)
+            ($.definition /.end)
+            ($.definition /.size)
+            ($.definition /.equivalence)
+            ($.definition /.hash)
 
-                 ($.definition /.block
-                   ""
-                   [(block start additional)])
+            ($.definition /.Block
+              "A block of valid unicode characters.")
 
-                 ($.definition /.within?
-                   ""
-                   [(within? block char)])
+            ($.definition /.block
+              ""
+              [(block start additional)])
 
-                 (,, (with_template [<name>]
-                       [($.definition <name>
-                          (let [[_ name] (symbol <name>)]
-                            (format (hex#encoded (/.start <name>))
-                                    "-" (hex#encoded (/.end <name>))
-                                    " | " (text.replaced "_" " " name))))]
+            ($.definition /.within?
+              ""
+              [(within? block char)])
 
-                       [/.basic_latin]
-                       [/.latin_1_supplement]
-                       [/.latin_extended_a]
-                       [/.latin_extended_b]
-                       [/.ipa_extensions]
-                       [/.spacing_modifier_letters]
-                       [/.combining_diacritical_marks]
-                       [/.greek_and_coptic]
-                       [/.cyrillic]
-                       [/.cyrillic_supplementary]
-                       [/.armenian]
-                       [/.hebrew]
-                       [/.arabic]
-                       [/.syriac]
-                       [/.thaana]
-                       [/.devanagari]
-                       [/.bengali]
-                       [/.gurmukhi]
-                       [/.gujarati]
-                       [/.oriya]
-                       [/.tamil]
-                       [/.telugu]
-                       [/.kannada]
-                       [/.malayalam]
-                       [/.sinhala]
-                       [/.thai]
-                       [/.lao]
-                       [/.tibetan]
-                       [/.myanmar]
-                       [/.georgian]
-                       [/.hangul_jamo]
-                       [/.ethiopic]
-                       [/.cherokee]
-                       [/.unified_canadian_aboriginal_syllabics]
-                       [/.ogham]
-                       [/.runic]
-                       [/.tagalog]
-                       [/.hanunoo]
-                       [/.buhid]
-                       [/.tagbanwa]
-                       [/.khmer]
-                       [/.mongolian]
-                       [/.limbu]
-                       [/.tai_le]
-                       [/.khmer_symbols]
-                       [/.phonetic_extensions]
-                       [/.latin_extended_additional]
-                       [/.greek_extended]
-                       [/.general_punctuation]
-                       [/.superscripts_and_subscripts]
-                       [/.currency_symbols]
-                       [/.combining_diacritical_marks_for_symbols]
-                       [/.letterlike_symbols]
-                       [/.number_forms]
-                       [/.arrows]
-                       [/.mathematical_operators]
-                       [/.miscellaneous_technical]
-                       [/.control_pictures]
-                       [/.optical_character_recognition]
-                       [/.enclosed_alphanumerics]
-                       [/.box_drawing]
-                       [/.block_elements]
-                       [/.geometric_shapes]
-                       [/.miscellaneous_symbols]
-                       [/.dingbats]
-                       [/.miscellaneous_mathematical_symbols_a]
-                       [/.supplemental_arrows_a]
-                       [/.braille_patterns]
-                       [/.supplemental_arrows_b]
-                       [/.miscellaneous_mathematical_symbols_b]
-                       [/.supplemental_mathematical_operators]
-                       [/.miscellaneous_symbols_and_arrows]
-                       [/.cjk_radicals_supplement]
-                       [/.kangxi_radicals]
-                       [/.ideographic_description_characters]
-                       [/.cjk_symbols_and_punctuation]
-                       [/.hiragana]
-                       [/.katakana]
-                       [/.bopomofo]
-                       [/.hangul_compatibility_jamo]
-                       [/.kanbun]
-                       [/.bopomofo_extended]
-                       [/.katakana_phonetic_extensions]
-                       [/.enclosed_cjk_letters_and_months]
-                       [/.cjk_compatibility]
-                       [/.cjk_unified_ideographs_extension_a]
-                       [/.yijing_hexagram_symbols]
-                       [/.cjk_unified_ideographs]
-                       [/.yi_syllables]
-                       [/.yi_radicals]
-                       [/.hangul_syllables]
-                       [/.high_surrogates]
-                       [/.high_private_use_surrogates]
-                       [/.low_surrogates]
-                       [/.private_use_area]
-                       [/.cjk_compatibility_ideographs]
-                       [/.alphabetic_presentation_forms]
-                       [/.arabic_presentation_forms_a]
-                       [/.variation_selectors]
-                       [/.combining_half_marks]
-                       [/.cjk_compatibility_forms]
-                       [/.small_form_variants]
-                       [/.arabic_presentation_forms_b]
-                       [/.halfwidth_and_fullwidth_forms]
-                       [/.specials]
-                       [/.numeric]
-                       [/.upper_case]
-                       [/.lower_case]
-                       ))]
-                [])))
+            (,, (with_template [<name>]
+                  [($.definition <name>
+                     (let [[_ name] (symbol <name>)]
+                       (format (hex#encoded (/.start <name>))
+                               "-" (hex#encoded (/.end <name>))
+                               " | " (text.replaced "_" " " name))))]
+
+                  [/.basic_latin]
+                  [/.latin_1_supplement]
+                  [/.latin_extended_a]
+                  [/.latin_extended_b]
+                  [/.ipa_extensions]
+                  [/.spacing_modifier_letters]
+                  [/.combining_diacritical_marks]
+                  [/.greek_and_coptic]
+                  [/.cyrillic]
+                  [/.cyrillic_supplementary]
+                  [/.armenian]
+                  [/.hebrew]
+                  [/.arabic]
+                  [/.syriac]
+                  [/.thaana]
+                  [/.devanagari]
+                  [/.bengali]
+                  [/.gurmukhi]
+                  [/.gujarati]
+                  [/.oriya]
+                  [/.tamil]
+                  [/.telugu]
+                  [/.kannada]
+                  [/.malayalam]
+                  [/.sinhala]
+                  [/.thai]
+                  [/.lao]
+                  [/.tibetan]
+                  [/.myanmar]
+                  [/.georgian]
+                  [/.hangul_jamo]
+                  [/.ethiopic]
+                  [/.cherokee]
+                  [/.unified_canadian_aboriginal_syllabics]
+                  [/.ogham]
+                  [/.runic]
+                  [/.tagalog]
+                  [/.hanunoo]
+                  [/.buhid]
+                  [/.tagbanwa]
+                  [/.khmer]
+                  [/.mongolian]
+                  [/.limbu]
+                  [/.tai_le]
+                  [/.khmer_symbols]
+                  [/.phonetic_extensions]
+                  [/.latin_extended_additional]
+                  [/.greek_extended]
+                  [/.general_punctuation]
+                  [/.superscripts_and_subscripts]
+                  [/.currency_symbols]
+                  [/.combining_diacritical_marks_for_symbols]
+                  [/.letterlike_symbols]
+                  [/.number_forms]
+                  [/.arrows]
+                  [/.mathematical_operators]
+                  [/.miscellaneous_technical]
+                  [/.control_pictures]
+                  [/.optical_character_recognition]
+                  [/.enclosed_alphanumerics]
+                  [/.box_drawing]
+                  [/.block_elements]
+                  [/.geometric_shapes]
+                  [/.miscellaneous_symbols]
+                  [/.dingbats]
+                  [/.miscellaneous_mathematical_symbols_a]
+                  [/.supplemental_arrows_a]
+                  [/.braille_patterns]
+                  [/.supplemental_arrows_b]
+                  [/.miscellaneous_mathematical_symbols_b]
+                  [/.supplemental_mathematical_operators]
+                  [/.miscellaneous_symbols_and_arrows]
+                  [/.cjk_radicals_supplement]
+                  [/.kangxi_radicals]
+                  [/.ideographic_description_characters]
+                  [/.cjk_symbols_and_punctuation]
+                  [/.hiragana]
+                  [/.katakana]
+                  [/.bopomofo]
+                  [/.hangul_compatibility_jamo]
+                  [/.kanbun]
+                  [/.bopomofo_extended]
+                  [/.katakana_phonetic_extensions]
+                  [/.enclosed_cjk_letters_and_months]
+                  [/.cjk_compatibility]
+                  [/.cjk_unified_ideographs_extension_a]
+                  [/.yijing_hexagram_symbols]
+                  [/.cjk_unified_ideographs]
+                  [/.yi_syllables]
+                  [/.yi_radicals]
+                  [/.hangul_syllables]
+                  [/.high_surrogates]
+                  [/.high_private_use_surrogates]
+                  [/.low_surrogates]
+                  [/.private_use_area]
+                  [/.cjk_compatibility_ideographs]
+                  [/.alphabetic_presentation_forms]
+                  [/.arabic_presentation_forms_a]
+                  [/.variation_selectors]
+                  [/.combining_half_marks]
+                  [/.cjk_compatibility_forms]
+                  [/.small_form_variants]
+                  [/.arabic_presentation_forms_b]
+                  [/.halfwidth_and_fullwidth_forms]
+                  [/.specials]
+                  [/.numeric]
+                  [/.upper_case]
+                  [/.lower_case]
+                  ))
+            )))
diff --git a/stdlib/source/documentation/lux/data/text/unicode/set.lux b/stdlib/source/documentation/lux/data/text/unicode/set.lux
index 268affa1b..68fbb3446 100644
--- a/stdlib/source/documentation/lux/data/text/unicode/set.lux
+++ b/stdlib/source/documentation/lux/data/text/unicode/set.lux
@@ -8,31 +8,32 @@
  [\\library
   ["[0]" /]])
 
-(.def .public documentation
-  (.List $.Module)
-  ($.module /._
-            ""
-            [($.definition /.Set)
-             ($.definition /.composite)
-             ($.definition /.character)
-             ($.definition /.non_character)
-             ($.definition /.full)
-             ($.definition /.start)
-             ($.definition /.end)
-             ($.definition /.equivalence)
+(def .public documentation
+  (List $.Documentation)
+  (list ($.module /._
+                  "")
 
-             ($.definition /.ascii)
-             ($.definition /.alphabetic)
-             ($.definition /.alpha_numeric)
-             ($.definition /.numeric)
-             ($.definition /.upper_case)
-             ($.definition /.lower_case)
+        ($.definition /.Set)
+        ($.definition /.composite)
+        ($.definition /.character)
+        ($.definition /.non_character)
+        ($.definition /.full)
+        ($.definition /.start)
+        ($.definition /.end)
+        ($.definition /.equivalence)
 
-             ($.definition /.set
-               ""
-               [(set [head tail])])
+        ($.definition /.ascii)
+        ($.definition /.alphabetic)
+        ($.definition /.alpha_numeric)
+        ($.definition /.numeric)
+        ($.definition /.upper_case)
+        ($.definition /.lower_case)
 
-             ($.definition /.member?
-               ""
-               [(member? set character)])]
-            []))
+        ($.definition /.set
+          ""
+          [(set [head tail])])
+
+        ($.definition /.member?
+          ""
+          [(member? set character)])
+        ))
diff --git a/stdlib/source/library/lux/test.lux b/stdlib/source/library/lux/test.lux
index a29acfefe..eafb394a5 100644
--- a/stdlib/source/library/lux/test.lux
+++ b/stdlib/source/library/lux/test.lux
@@ -33,116 +33,51 @@
     ["[0]" symbol]
     ["[0]" code (.only)
      ["<[1]>" \\parser]]
-    [macro
+    [macro (.only with_symbols)
      [syntax (.only syntax)]]]
    [world
     ["[0]" environment]
     ["[0]" console]
     [time
      ["[0]" instant]
-     ["[0]" duration (.only Duration)]]]]])
-
-(type .public Coverage
-  (Set Symbol))
-
-(type .public Tally
-  (Record
-   [#successes Nat
-    #failures Nat
-    #expected Coverage
-    #actual Coverage]))
-
-(def (total parameter subject)
-  (-> Tally Tally Tally)
-  [#successes (n.+ (the #successes parameter) (the #successes subject))
-   #failures (n.+ (the #failures parameter) (the #failures subject))
-   #expected (set.union (the #expected parameter)
-                        (the #expected subject))
-   #actual (set.union (the #actual parameter)
-                      (the #actual subject))])
-
-(def start
-  Tally
-  [#successes 0
-   #failures 0
-   #expected (set.empty symbol.hash)
-   #actual (set.empty symbol.hash)])
-
-(with_template [<name> <category>]
-  [(def <name>
-     Tally
-     (revised <category> .++ ..start))]
-
-  [success_tally #successes]
-  [failure_tally #failures]
-  )
-
-(type .public Assertion
-  (Async [Tally Text]))
+     ["[0]" duration (.only Duration)]]]]]
+ [/
+  ["//" unit]])
 
 (type .public Test
-  (Random Assertion))
-
-(def separator
-  text.new_line)
-
-(def .public (and' left right)
-  (-> Assertion Assertion Assertion)
-  (let [[read! write!] (is [(Async [Tally Text])
-                            (async.Resolver [Tally Text])]
-                           (async.async []))
-        _ (|> left
-              (async.upon! (function (_ [l_tally l_documentation])
-                             (async.upon! (function (_ [r_tally r_documentation])
-                                            (write! [(..total l_tally r_tally)
-                                                     (format l_documentation ..separator r_documentation)]))
-                                          right)))
-              io.run!)]
-    read!))
+  (Random //.Test))
 
 (def .public (and left right)
   (-> Test Test Test)
   (do [! random.monad]
     [left left]
-    (at ! each (..and' left) right)))
-
-(def (context' description)
-  (-> Text Test Test)
-  (random#each (async#each (function (_ [tally documentation])
-                             [tally (|> documentation
-                                        (text.all_split_by ..separator)
-                                        (list#each (|>> (format text.tab)))
-                                        (text.interposed ..separator)
-                                        (format description ..separator))]))))
+    (at ! each (//.and left) right)))
 
 (def .public context
   (-> Text Test Test)
-  (|>> %.text context'))
-
-(def failure_prefix "[Failure] ")
-(def success_prefix "[Success] ")
+  (|>> %.text
+       //.context
+       random#each))
 
 (def .public failure
   (-> Text Test)
-  (|>> (format ..failure_prefix)
-       [..failure_tally]
-       async#in
+  (|>> //.failure
        random#in))
 
-(def .public (assertion message condition)
-  (-> Text Bit Assertion)
-  (<| async#in
-      (if condition
-        [..success_tally (format ..success_prefix message)]
-        [..failure_tally (format ..failure_prefix message)])))
+(def .public success
+  (-> Text Test)
+  (|>> //.success
+       random#in))
 
-(def .public (property message condition)
+(def .public (test message condition)
   (-> Text Bit Test)
-  (random#in (..assertion (%.text message) condition)))
+  (random#in (//.test message condition)))
 
 (def .public (lifted message random)
   (-> Text (Random Bit) Test)
-  (random#each (..assertion (%.text message)) random))
+  (do random.monad
+    [it random]
+    (test message it)))
 
 (def pcg_32_magic_inc
   Nat
@@ -159,8 +94,11 @@
       [prng result])))
 
 (def failed?
-  (-> Tally Bit)
-  (|>> (the #failures) (n.> 0)))
+  (-> //.Tally Bit)
+  (|>> (the //.#failures) (n.> 0)))
+
+(def separator
+  text.new_line)
 
 (def (times_failure seed documentation)
   (-> Seed Text Text)
@@ -189,21 +127,21 @@
                                product.right))))])))))
 
 (def (description duration tally)
-  (-> Duration Tally Text)
-  (let [successes (the #successes tally)
-        failures (the #failures tally)
-        missing (set.difference (the #actual tally)
-                                (the #expected tally))
-        unexpected (set.difference (the #expected tally)
-                                   (the #actual tally))
-        report (is (-> Coverage Text)
+  (-> Duration //.Tally Text)
+  (let [successes (the //.#successes tally)
+        failures (the //.#failures tally)
+        missing (set.difference (the //.#actual tally)
+                                (the //.#expected tally))
+        unexpected (set.difference (the //.#expected tally)
+                                   (the //.#actual tally))
+        report (is (-> //.Coverage Text)
                    (|>> set.list
                         (list.sorted (at symbol.order <))
                         (exception.listing %.symbol)))
-        expected_coverage (set.size (the #expected tally))
+        expected_coverage (set.size (the //.#expected tally))
         unexpected_coverage (set.size unexpected)
         actual_coverage (n.- unexpected_coverage
-                             (set.size (the #actual tally)))
+                             (set.size (the //.#actual tally)))
         coverage (case expected_coverage
                    0 "N/A"
                    expected (let [missing_ratio (f./ (n.frac expected)
@@ -266,128 +204,30 @@
                       (console.write_line report console))
                <else>))]
     (async.future (at environment.default exit
-                      (case (the #failures tally)
+                      (case (the //.#failures tally)
                         0 ..success_exit_code
                         _ ..failure_exit_code)))))
 
-(def definition_separator " & ")
-
-(def clean_up_marker (text.of_char (hex "05")))
-
-(def coverage_format
-  (%.Format Symbol)
-  (|>> %.symbol (format ..clean_up_marker)))
-
-(def .public (with_coverage' coverage condition)
-  (-> (List Symbol) Bit Assertion)
-  (let [message (|> coverage
-                    (list#each ..coverage_format)
-                    (text.interposed ..definition_separator))
-        coverage (set.of_list symbol.hash coverage)]
-    (|> (..assertion message condition)
-        (async#each (function (_ [tally documentation])
-                      [(revised #actual (set.union coverage) tally)
-                       documentation])))))
-
-(def .public (with_coverage coverage condition)
-  (-> (List Symbol) Bit Test)
-  (|> (..with_coverage' coverage condition)
-      random#in))
-
-(def .public (for' coverage test)
-  (-> (List Symbol) Test Test)
-  (let [context (|> coverage
-                    (list#each ..coverage_format)
-                    (text.interposed ..definition_separator))
-        coverage (set.of_list symbol.hash coverage)]
-    (random#each (async#each (function (_ [tally documentation])
-                               [(revised #actual (set.union coverage) tally)
-                                documentation]))
-                 (..context' context test))))
-
-(def (symbol_code symbol)
-  (-> Symbol Code)
-  (code.tuple (list (code.text (symbol.module symbol))
-                    (code.text (symbol.short symbol)))))
-
-(def .public reference
-  (syntax (_ [name <code>.symbol])
-    (do meta.monad
-      [_ (meta.export name)]
-      (in (list (symbol_code name))))))
-
-(def coverage_separator
-  Text
-  (text.of_char 31))
-
-(def encoded_coverage
-  (-> (List Text) Text)
-  (list#mix (function (_ short aggregate)
-              (case aggregate
-                "" short
-                _ (format aggregate ..coverage_separator short)))
-            ""))
-
-(def (coverage_definitions module encoding)
-  (-> Text Text Coverage)
-  (loop (again [remaining encoding
-                output (set.of_list symbol.hash (list))])
-    (case (text.split_by ..coverage_separator remaining)
-      {.#Some [head tail]}
-      (again tail (set.has [module head] output))
-      
-      {.#None}
-      (set.has [module remaining] output))))
-
-(with_template [<macro> <function>]
-  [(def .public <macro>
-     (syntax (_ [coverage (<code>.tuple (<>.many <code>.any))
-                 condition <code>.any])
-       (let [coverage (list#each (function (_ definition)
-                                   (` (..reference (, definition))))
-                                 coverage)]
-         (in (list (` (<function> (is (.List .Symbol)
-                                      (.list (,* coverage)))
-                                  (, condition))))))))]
-
-  [coverage' ..with_coverage']
-  [coverage ..with_coverage]
-  )
+(def .public coverage
+  (syntax (_ [coverage <code>.any
+              condition <code>.any])
+    (in (list (` (at random.monad (,' in) (//.coverage (, coverage) (, condition))))))))
 
 (def .public for
-  (syntax (_ [coverage (<code>.tuple (<>.many <code>.any))
+  (syntax (_ [coverage <code>.any
               test <code>.any])
-    (let [coverage (list#each (function (_ definition)
-                                (` (..reference (, definition))))
-                              coverage)]
-      (in (list (` (..for' (is (.List .Symbol)
-                               (.list (,* coverage)))
-                           (, test))))))))
-
-(def .public (covering' module coverage test)
-  (-> Text Text Test Test)
-  (let [coverage (..coverage_definitions module coverage)]
-    (|> (..context' module test)
-        (random#each (async#each (function (_ [tally documentation])
-                                   [(revised #expected (set.union coverage) tally)
-                                    (|> documentation
-                                        (text.replaced (format ..clean_up_marker module symbol.separator) "")
-                                        (text.replaced ..clean_up_marker ""))]))))))
+    (in (list (` (at random.functor
+                     (,' each)
+                     (|>> (//.for (, coverage)))
+                     (, test)))))))
 
 (def .public covering
-  (syntax (_ [module <code>.symbol
+  (syntax (_ [module <code>.any
               test <code>.any])
-    (do meta.monad
-      [.let [module (symbol.module module)]
-       definitions (meta.definitions module)
-       .let [coverage (|> definitions
-                          (list#mix (function (_ [short [exported? _]] aggregate)
-                                      (if exported?
-                                        {.#Item short aggregate}
-                                        aggregate))
-                                    {.#End})
-                          ..encoded_coverage)]]
-      (in (list (` (..covering' (, (code.text module)) (, (code.text coverage)) (, test))))))))
+    (in (list (` (at random.functor
+                     (,' each)
+                     (|>> (//.covering (, module)))
+                     (, test)))))))
 
 (exception .public (error_during_execution [error Text])
   (exception.report
@@ -397,13 +237,13 @@
   (-> (List Test) Test)
   (case (list.size tests)
     0
-    (random#in (async#in [..start ""]))
+    (random#in (async#in [//.start ""]))
     
     expected_tests
     (do random.monad
       [seed random.nat
        .let [prng (random.pcg_32 [..pcg_32_magic_inc seed])
-             run! (is (-> Test Assertion)
+             run! (is (-> Test //.Test)
                       (|>> (random.result prng)
                            product.right
                            (function (_ _))
@@ -413,11 +253,11 @@
                              output
                              
                              {try.#Failure error}
-                             (..assertion (exception.error ..error_during_execution [error]) false))))
-             state (is (Atom (Dictionary Nat [Tally Text]))
+                             (//.test (exception.error ..error_during_execution [error]) false))))
+             state (is (Atom (Dictionary Nat [//.Tally Text]))
                        (atom.atom (dictionary.empty n.order)))
-             [read! write!] (is [Assertion
-                                 (async.Resolver [Tally Text])]
+             [read! write!] (is [//.Test
+                                 (async.Resolver [//.Tally Text])]
                                 (async.async []))
              _ (list#mix (function (_ test index)
                            (exec
@@ -431,7 +271,7 @@
                                                                          (list#each product.right))]
                                                       (write! [(|> assertions
                                                                    (list#each product.left)
-                                                                   (list#mix ..total ..start))
+                                                                   (list#mix //.total //.start))
                                                                (|> assertions
                                                                    (list#each product.right)
                                                                    (text.interposed ..separator))]))
diff --git a/stdlib/source/library/lux/test/unit.lux b/stdlib/source/library/lux/test/unit.lux
new file mode 100644
index 000000000..0077c18a9
--- /dev/null
+++ b/stdlib/source/library/lux/test/unit.lux
@@ -0,0 +1,223 @@
+(.require
+ [library
+  [lux (.except and for)
+   [abstract
+    [monad (.only do)]]
+   [control
+    ["<>" parser]
+    ["[0]" io]
+    [concurrency
+     ["[0]" async (.only Async) (.use "[1]#[0]" monad)]]]
+   [data
+    ["[0]" text (.only)
+     ["%" \\format (.only format)]]
+    [collection
+     ["[0]" list (.use "[1]#[0]" functor mix)]
+     ["[0]" set (.only Set)]]]
+   [math
+    [number (.only hex)
+     ["n" nat]]]
+   ["[0]" meta (.only)
+    ["[0]" symbol]
+    ["[0]" code (.only)
+     ["<[1]>" \\parser]]
+    [macro
+     [syntax (.only syntax)]]]]])
+
+(type .public Coverage
+  (Set Symbol))
+
+(type .public Tally
+  (Record
+   [#successes Nat
+    #failures Nat
+    #expected Coverage
+    #actual Coverage]))
+
+(def .public (total parameter subject)
+  (-> Tally Tally Tally)
+  [#successes (n.+ (the #successes parameter) (the #successes subject))
+   #failures (n.+ (the #failures parameter) (the #failures subject))
+   #expected (set.union (the #expected parameter)
+                        (the #expected subject))
+   #actual (set.union (the #actual parameter)
+                      (the #actual subject))])
+
+(def .public start
+  Tally
+  [#successes 0
+   #failures 0
+   #expected (set.empty symbol.hash)
+   #actual (set.empty symbol.hash)])
+
+(with_template [<name> <category>]
+  [(def <name>
+     Tally
+     (revised <category> .++ ..start))]
+
+  [success_tally #successes]
+  [failure_tally #failures]
+  )
+
+(type .public Test
+  (Async [Tally Text]))
+
+(def separator
+  text.new_line)
+
+(def .public (and left right)
+  (-> Test Test Test)
+  (let [[read! write!] (is [(Async [Tally Text])
+                            (async.Resolver [Tally Text])]
+                           (async.async []))
+        _ (|> left
+              (async.upon! (function (_ [l_tally l_documentation])
+                             (async.upon! (function (_ [r_tally r_documentation])
+                                            (write! [(..total l_tally r_tally)
+                                                     (format l_documentation ..separator r_documentation)]))
+                                          right)))
+              io.run!)]
+    read!))
+
+(def (context' description)
+  (-> Text Test Test)
+  (async#each (function (_ [tally documentation])
+                [tally (|> documentation
+                           (text.all_split_by ..separator)
+                           (list#each (|>> (format text.tab)))
+                           (text.interposed ..separator)
+                           (format description ..separator))])))
+
+(def .public context
+  (-> Text Test Test)
+  (|>> %.text context'))
+
+(def failure_prefix "[Failure] ")
+(def success_prefix "[Success] ")
+
+(def .public failure
+  (-> Text Test)
+  (|>> (format ..failure_prefix)
+       [..failure_tally]
+       async#in))
+
+(def .public success
+  (-> Text Test)
+  (|>> (format ..success_prefix)
+       [..success_tally]
+       async#in))
+
+(def .public (test message condition)
+  (-> Text Bit Test)
+  (if condition
+    (success message)
+    (failure message)))
+
+(def definition_separator " & ")
+
+(def clean_up_marker (text.of_char (hex "05")))
+
+(def coverage_format
+  (%.Format Symbol)
+  (|>> %.symbol (format ..clean_up_marker)))
+
+(def .public reference
+  (let [symbol (is (-> Symbol Code)
+                   (function (_ symbol)
+                     (` (is Symbol
+                            [(, (code.text (symbol.module symbol)))
+                             (, (code.text (symbol.short symbol)))]))))]
+    (syntax (_ [name <code>.symbol])
+      (do meta.monad
+        [_ (meta.export name)]
+        (in (list (symbol name)))))))
+
+(def coverage_separator
+  Text
+  (text.of_char 31))
+
+(def encoded_coverage
+  (-> (List Text) Text)
+  (list#mix (function (_ short aggregate)
+              (case aggregate
+                "" short
+                _ (format aggregate ..coverage_separator short)))
+            ""))
+
+(def (coverage_definitions module encoding)
+  (-> Text Text Coverage)
+  (loop (again [remaining encoding
+                output (set.of_list symbol.hash (list))])
+    (case (text.split_by ..coverage_separator remaining)
+      {.#Some [head tail]}
+      (again tail (set.has [module head] output))
+      
+      {.#None}
+      (set.has [module remaining] output))))
+
+(def .public (with_coverage coverage condition)
+  (-> (List Symbol) Bit Test)
+  (let [message (|> coverage
+                    (list#each ..coverage_format)
+                    (text.interposed ..definition_separator))
+        coverage (set.of_list symbol.hash coverage)]
+    (|> (..test message condition)
+        (async#each (function (_ [tally documentation])
+                      [(revised #actual (set.union coverage) tally)
+                       documentation])))))
+
+(def .public coverage
+  (syntax (_ [coverage (<code>.tuple (<>.many <code>.any))
+              condition <code>.any])
+    (let [coverage (list#each (function (_ definition)
+                                (` (..reference (, definition))))
+                              coverage)]
+      (in (list (` (..with_coverage (is (.List .Symbol)
+                                        (.list (,* coverage)))
+                     (, condition))))))))
+
+(def .public (for' coverage test)
+  (-> (List Symbol) Test Test)
+  (let [context (|> coverage
+                    (list#each ..coverage_format)
+                    (text.interposed ..definition_separator))
+        coverage (set.of_list symbol.hash coverage)]
+    (async#each (function (_ [tally documentation])
+                  [(revised #actual (set.union coverage) tally)
+                   documentation])
+                (..context' context test))))
+
+(def .public for
+  (syntax (_ [coverage (<code>.tuple (<>.many <code>.any))
+              test <code>.any])
+    (let [coverage (list#each (function (_ definition)
+                                (` (..reference (, definition))))
+                              coverage)]
+      (in (list (` (..for' (is (.List .Symbol)
+                               (.list (,* coverage)))
+                           (, test))))))))
+
+(def .public (covering' module coverage test)
+  (-> Text Text Test Test)
+  (let [coverage (..coverage_definitions module coverage)]
+    (|> (..context' module test)
+        (async#each (function (_ [tally documentation])
+                      [(revised #expected (set.union coverage) tally)
+                       (|> documentation
+                           (text.replaced (format ..clean_up_marker module symbol.separator) "")
+                           (text.replaced ..clean_up_marker ""))])))))
+
+(def .public covering
+  (syntax (_ [module <code>.symbol
+              test <code>.any])
+    (do meta.monad
+      [.let [module (symbol.module module)]
+       definitions (meta.definitions module)
+       .let [coverage (|> definitions
+                          (list#mix (function (_ [short [exported? _]] aggregate)
+                                      (if exported?
+                                        {.#Item short aggregate}
+                                        aggregate))
+                                    {.#End})
+                          ..encoded_coverage)]]
+      (in (list (` (..covering' (, (code.text module)) (, (code.text coverage)) (, test))))))))
diff --git a/stdlib/source/specification/aedifex/repository.lux b/stdlib/source/specification/aedifex/repository.lux
index 9cc2e0f2d..a0812b443 100644
--- a/stdlib/source/specification/aedifex/repository.lux
+++ b/stdlib/source/specification/aedifex/repository.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -12,7 +11,9 @@
     ["[0]" binary (.only)
      ["_[1]" \\test]]]
    [math
-    ["[0]" random]]]]
+    ["[0]" random]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\program
   ["[0]" / (.only)
    ["[1][0]" remote]
@@ -27,7 +28,7 @@
   (-> Artifact Artifact (/.Repository Async) Test)
   (do random.monad
     [expected (_binary.random 100)]
-    (in (all _.and'
+    (in (all unit.and
              (do async.monad
                [.let [good_uri (/remote.uri (the //artifact.#version valid_artifact) valid_artifact //artifact/extension.lux_library)]
                 good_upload! (at subject upload good_uri expected)
@@ -36,7 +37,7 @@
                 .let [bad_uri (/remote.uri (the //artifact.#version invalid_artifact) invalid_artifact //artifact/extension.lux_library)]
                 bad_upload! (at subject upload bad_uri expected)
                 bad_download! (at subject download bad_uri)]
-               (_.coverage' [/.Repository]
+               (unit.coverage [/.Repository]
                  (let [successfull_flow!
                        (case [good_upload! good_download!]
                          [{try.#Success _} {try.#Success actual}]
diff --git a/stdlib/source/specification/compositor/analysis/type.lux b/stdlib/source/specification/compositor/analysis/type.lux
index 6675fad09..89ee8646f 100644
--- a/stdlib/source/specification/compositor/analysis/type.lux
+++ b/stdlib/source/specification/compositor/analysis/type.lux
@@ -56,8 +56,8 @@
     [[typeC exprT exprC] ..check
      [other_typeC other_exprT other_exprC] ..check]
     (all _.and
-         (_.property "lux check"
+         (_.test "lux check"
            (check_success+ expander state "lux check" (list typeC exprC) exprT))
-         (_.property "lux coerce"
+         (_.test "lux coerce"
            (check_success+ expander state "lux coerce" (list typeC other_exprC) exprT))
          )))
diff --git a/stdlib/source/specification/compositor/generation/case.lux b/stdlib/source/specification/compositor/generation/case.lux
index 5e00820b2..6ac785a12 100644
--- a/stdlib/source/specification/compositor/generation/case.lux
+++ b/stdlib/source/specification/compositor/generation/case.lux
@@ -101,7 +101,7 @@
   (-> Runner Test)
   (do r.monad
     [value r.safe_frac]
-    (_.property (%.symbol (symbol synthesis.branch/let))
+    (_.test (%.symbol (symbol synthesis.branch/let))
       (|> (synthesis.branch/let [(synthesis.f64 value)
                                  0
                                  (synthesis.variable/local 0)])
@@ -114,7 +114,7 @@
     [on_true r.safe_frac
      on_false (|> r.safe_frac (r.only (|>> (f.= on_true) not)))
      verdict r.bit]
-    (_.property (%.symbol (symbol synthesis.branch/if))
+    (_.test (%.symbol (symbol synthesis.branch/if))
       (|> (synthesis.branch/if [(synthesis.bit verdict)
                                 (synthesis.f64 on_true)
                                 (synthesis.f64 on_false)])
@@ -127,7 +127,7 @@
     [[inputS pathS] ..case
      on_success r.safe_frac
      on_failure (|> r.safe_frac (r.only (|>> (f.= on_success) not)))]
-    (_.property (%.symbol (symbol synthesis.branch/case))
+    (_.test (%.symbol (symbol synthesis.branch/case))
       (|> (synthesis.branch/case
            [inputS
             (all synthesis.path/alt
@@ -243,11 +243,11 @@
 (def (special_spec run)
   (-> Runner Test)
   (all _.and
-       (_.property "==="
+       (_.test "==="
          (and (text#= (synthesis.%path special_path)
                       (synthesis.%path special_pattern_path))
               (at synthesis.path_equivalence = special_path special_pattern_path)))
-       (_.property "CODE"
+       (_.test "CODE"
          (|> special_input
              (run "special_input")
              (pipe.case
@@ -256,7 +256,7 @@
                
                {try.#Failure _}
                false)))
-       (_.property "PATTERN_MATCHING 0"
+       (_.test "PATTERN_MATCHING 0"
          (|> (synthesis.branch/case [special_input
                                      special_path])
              (run "special_path")
@@ -266,7 +266,7 @@
                
                {try.#Failure _}
                false)))
-       (_.property "PATTERN_MATCHING 1"
+       (_.test "PATTERN_MATCHING 1"
          (|> (synthesis.branch/case [special_input
                                      special_pattern_path])
              (run "special_pattern_path")
diff --git a/stdlib/source/specification/compositor/generation/common.lux b/stdlib/source/specification/compositor/generation/common.lux
index eb1a1ac70..ba691bde7 100644
--- a/stdlib/source/specification/compositor/generation/common.lux
+++ b/stdlib/source/specification/compositor/generation/common.lux
@@ -40,7 +40,7 @@
     [param r.i64
      subject r.i64]
     (with_expansions [<binary> (with_template [<extension> <reference> <param_expr>]
-                                 [(_.property <extension>
+                                 [(_.test <extension>
                                     (|> {synthesis.#Extension <extension> (list (synthesis.i64 param)
                                                                                 (synthesis.i64 subject))}
                                         (run (..safe <extension>))
@@ -60,7 +60,7 @@
                                  )]
       (all _.and
            <binary>
-           (_.property "lux i64 arithmetic-right-shift"
+           (_.test "lux i64 arithmetic-right-shift"
              (|> {synthesis.#Extension "lux i64 arithmetic-right-shift"
                                        (list (synthesis.i64 subject)
                                              (synthesis.i64 param))}
@@ -83,7 +83,7 @@
      subject r.i64]
     (`` (all _.and
              (,, (with_template [<extension> <type> <prepare> <comp> <subject_expr>]
-                   [(_.property <extension>
+                   [(_.test <extension>
                       (|> {synthesis.#Extension <extension> (list (synthesis.i64 subject))}
                           (run (..safe <extension>))
                           (pipe.case
@@ -101,7 +101,7 @@
                                                                                  (as Int))]
                    ))
              (,, (with_template [<extension> <reference> <outputT> <comp>]
-                   [(_.property <extension>
+                   [(_.test <extension>
                       (|> {synthesis.#Extension <extension> (list (synthesis.i64 param)
                                                                   (synthesis.i64 subject))}
                           (run (..safe <extension>))
@@ -133,7 +133,7 @@
      subject ..simple_frac]
     (`` (all _.and
              (,, (with_template [<extension> <reference> <comp>]
-                   [(_.property <extension>
+                   [(_.test <extension>
                       (|> {synthesis.#Extension <extension> (list (synthesis.f64 param)
                                                                   (synthesis.f64 subject))}
                           (run (..safe <extension>))
@@ -146,7 +146,7 @@
                    ["lux f64 %" f.% f.=]
                    ))
              (,, (with_template [<extension> <text>]
-                   [(_.property <extension>
+                   [(_.test <extension>
                       (|> {synthesis.#Extension <extension> (list (synthesis.f64 param)
                                                                   (synthesis.f64 subject))}
                           (run (..safe <extension>))
@@ -162,7 +162,7 @@
                    ["lux f64 <" f.<]
                    ))
              (,, (with_template [<extension> <reference>]
-                   [(_.property <extension>
+                   [(_.test <extension>
                       (|> {synthesis.#Extension <extension> (list)}
                           (run (..safe <extension>))
                           (//case.verify <reference>)))]
@@ -171,7 +171,7 @@
                    ["lux f64 max"      ("lux f64 max")]
                    ["lux f64 smallest" ("lux f64 smallest")]
                    ))
-             (_.property "'lux f64 i64 && 'lux i64 f64'"
+             (_.test "'lux f64 i64 && 'lux i64 f64'"
                (|> (run (..safe "lux f64 i64")
                         (|> subject synthesis.f64
                             (list) {synthesis.#Extension "lux f64 i64"}
@@ -197,7 +197,7 @@
            pre_rep_all (|> sample_lower (list.repeated sample_size) (text.interposed sample_upper))
            post_rep_all (|> sample_lower (list.repeated sample_size) (text.interposed sample_alpha))]]
     (all _.and
-         (_.property "Can compare texts for equality."
+         (_.test "Can compare texts for equality."
            (and (|> {synthesis.#Extension "lux text =" (list sample_lowerS sample_lowerS)}
                     (run (..safe "lux text ="))
                     (pipe.case
@@ -214,7 +214,7 @@
 
                       _
                       false))))
-         (_.property "Can compare texts for order."
+         (_.test "Can compare texts for order."
            (|> {synthesis.#Extension "lux text <" (list sample_lowerS sample_upperS)}
                (run (..safe "lux text <"))
                (pipe.case
@@ -223,7 +223,7 @@
 
                  {try.#Failure _}
                  false)))
-         (_.property "Can get length of text."
+         (_.test "Can get length of text."
            (|> {synthesis.#Extension "lux text size" (list sample_lowerS)}
                (run (..safe "lux text size"))
                (pipe.case
@@ -232,7 +232,7 @@
 
                  _
                  false)))
-         (_.property "Can concatenate text."
+         (_.test "Can concatenate text."
            (|> {synthesis.#Extension "lux text size" (list concatenatedS)}
                (run (..safe "lux text size"))
                (pipe.case
@@ -241,7 +241,7 @@
 
                  _
                  false)))
-         (_.property "Can find index of sub-text."
+         (_.test "Can find index of sub-text."
            (and (|> {synthesis.#Extension "lux text index"
                                           (list concatenatedS sample_lowerS
                                                 (synthesis.i64 +0))}
@@ -281,10 +281,10 @@
 
                                      _
                                      false))))]
-           (_.property "Can clip text to extract sub-text."
+           (_.test "Can clip text to extract sub-text."
              (and (test_clip 0 sample_size sample_lower)
                   (test_clip sample_size sample_size sample_upper))))
-         (_.property "Can extract individual characters from text."
+         (_.test "Can extract individual characters from text."
            (|> {synthesis.#Extension "lux text char"
                                      (list sample_lowerS
                                            (synthesis.i64 char_idx))}
@@ -305,7 +305,7 @@
   (do r.monad
     [message (r.alphabetic 5)]
     (all _.and
-         (_.property "Can log messages."
+         (_.test "Can log messages."
            (|> {synthesis.#Extension "lux io log"
                                      (list (synthesis.text (format "LOG: " message)))}
                (run (..safe "lux io log"))
@@ -315,7 +315,7 @@
 
                  {try.#Failure _}
                  false)))
-         (_.property "Can throw runtime errors."
+         (_.test "Can throw runtime errors."
            (and (|> {synthesis.#Extension "lux try"
                                           (list (synthesis.function/abstraction
                                                  [synthesis.#environment (list)
diff --git a/stdlib/source/specification/compositor/generation/function.lux b/stdlib/source/specification/compositor/generation/function.lux
index 7fc24cfb8..2fb9714e0 100644
--- a/stdlib/source/specification/compositor/generation/function.lux
+++ b/stdlib/source/specification/compositor/generation/function.lux
@@ -55,12 +55,12 @@
      .let [expectation (maybe.trusted (list.item (-- local) inputs))
            inputsS (list#each (|>> synthesis.f64) inputs)]]
     (all _.and
-         (_.property "Can read arguments."
+         (_.test "Can read arguments."
            (|> (synthesis.function/apply [synthesis.#function functionS
                                           synthesis.#arguments inputsS])
                (run "with_local")
                (//case.verify expectation)))
-         (_.property "Can partially apply functions."
+         (_.test "Can partially apply functions."
            (or (n.= 1 arity)
                (let [preS (list.first partial_arity inputsS)
                      postS (list.after partial_arity inputsS)
@@ -70,7 +70,7 @@
                                                 synthesis.#arguments postS])
                      (run "partial_application")
                      (//case.verify expectation)))))
-         (_.property "Can read environment."
+         (_.test "Can read environment."
            (or (n.= 1 arity)
                (let [environment (|> partial_arity
                                      (enum.range n.enum 1)
diff --git a/stdlib/source/specification/compositor/generation/primitive.lux b/stdlib/source/specification/compositor/generation/primitive.lux
index 9e6ea2e02..fcb6bd050 100644
--- a/stdlib/source/specification/compositor/generation/primitive.lux
+++ b/stdlib/source/specification/compositor/generation/primitive.lux
@@ -32,7 +32,7 @@
            (,, (with_template [<evaluation_name> <synthesis> <gen> <test>]
                  [(do r.monad
                     [expected <gen>]
-                    (_.property (%.symbol (symbol <synthesis>))
+                    (_.test (%.symbol (symbol <synthesis>))
                       (|> (run <evaluation_name> (<synthesis> expected))
                           (pipe.case
                             {try.#Success actual}
diff --git a/stdlib/source/specification/compositor/generation/reference.lux b/stdlib/source/specification/compositor/generation/reference.lux
index 7159afe1b..27441f349 100644
--- a/stdlib/source/specification/compositor/generation/reference.lux
+++ b/stdlib/source/specification/compositor/generation/reference.lux
@@ -29,7 +29,7 @@
   (do r.monad
     [name ..symbol
      expected r.safe_frac]
-    (_.property "Definitions."
+    (_.test "Definitions."
       (|> (define name (synthesis.f64 expected))
           (pipe.case
             {try.#Success actual}
@@ -43,7 +43,7 @@
   (do [! r.monad]
     [register (|> r.nat (at ! each (n.% 100)))
      expected r.safe_frac]
-    (_.property "Local variables."
+    (_.test "Local variables."
       (|> (synthesis.branch/let [(synthesis.f64 expected)
                                  register
                                  (synthesis.variable/local register)])
diff --git a/stdlib/source/specification/compositor/generation/structure.lux b/stdlib/source/specification/compositor/generation/structure.lux
index 523ad990e..5521c6303 100644
--- a/stdlib/source/specification/compositor/generation/structure.lux
+++ b/stdlib/source/specification/compositor/generation/structure.lux
@@ -35,7 +35,7 @@
      tag_in (|> r.nat (at ! each (n.% num_tags)))
      .let [last?_in (|> num_tags -- (n.= tag_in))]
      value_in r.i64]
-    (_.property (%.symbol (symbol synthesis.variant))
+    (_.test (%.symbol (symbol synthesis.variant))
       (|> (synthesis.variant [analysis.#lefts (if last?_in
                                                 (-- tag_in)
                                                 tag_in)
@@ -69,7 +69,7 @@
   (do [! r.monad]
     [size (|> r.nat (at ! each (|>> (n.% 10) (n.max 2))))
      tuple_in (r.list size r.i64)]
-    (_.property (%.symbol (symbol synthesis.tuple))
+    (_.test (%.symbol (symbol synthesis.tuple))
       (|> (synthesis.tuple (list#each (|>> synthesis.i64) tuple_in))
           (run "tuple")
           (pipe.case
diff --git a/stdlib/source/specification/lux/abstract/apply.lux b/stdlib/source/specification/lux/abstract/apply.lux
index 9c29ed974..460469078 100644
--- a/stdlib/source/specification/lux/abstract/apply.lux
+++ b/stdlib/source/specification/lux/abstract/apply.lux
@@ -21,7 +21,7 @@
   (All (_ f) (-> (Injection f) (Comparison f) (Apply f) Test))
   (do [! random.monad]
     [sample (at ! each injection random.nat)]
-    (_.property "Identity."
+    (_.test "Identity."
       ((comparison n.=)
        (/#on sample (injection function.identity))
        sample))))
@@ -31,7 +31,7 @@
   (do [! random.monad]
     [sample random.nat
      increase (at ! each n.+ random.nat)]
-    (_.property "Homomorphism."
+    (_.test "Homomorphism."
       ((comparison n.=)
        (/#on (injection sample) (injection increase))
        (injection (increase sample))))))
@@ -41,7 +41,7 @@
   (do [! random.monad]
     [sample random.nat
      increase (at ! each n.+ random.nat)]
-    (_.property "Interchange."
+    (_.test "Interchange."
       ((comparison n.=)
        (/#on (injection sample) (injection increase))
        (/#on (injection increase) (injection (is (-> (-> Nat Nat) Nat)
@@ -56,7 +56,7 @@
                     (at ! each n.+ random.nat))
        decrease (is (Random :$/1:)
                     (at ! each n.- random.nat))]
-      (_.property "Composition."
+      (_.test "Composition."
         ((comparison n.=)
          (|> (injection (is (-> :$/1: :$/1: :$/1:)
                             function.composite))
diff --git a/stdlib/source/specification/lux/abstract/codec.lux b/stdlib/source/specification/lux/abstract/codec.lux
index acbc07647..7ed8612b1 100644
--- a/stdlib/source/specification/lux/abstract/codec.lux
+++ b/stdlib/source/specification/lux/abstract/codec.lux
@@ -18,7 +18,7 @@
   (do random.monad
     [expected generator]
     (_.for [/.Codec]
-           (_.property "Isomorphism."
+           (_.test "Isomorphism."
              (case (|> expected @//encoded @//decoded)
                {try.#Success actual}
                (@//= expected actual)
diff --git a/stdlib/source/specification/lux/abstract/comonad.lux b/stdlib/source/specification/lux/abstract/comonad.lux
index 897c29f06..9bd0ec336 100644
--- a/stdlib/source/specification/lux/abstract/comonad.lux
+++ b/stdlib/source/specification/lux/abstract/comonad.lux
@@ -21,7 +21,7 @@
                            (|>> _//out (n.+ diff)))
                   random.nat)
      .let [start (injection sample)]]
-    (_.property "Left identity."
+    (_.test "Left identity."
       (n.= (morphism start)
            (|> start _//disjoint (_//each morphism) _//out)))))
 
@@ -31,7 +31,7 @@
     [sample random.nat
      .let [start (injection sample)
            == (comparison n.=)]]
-    (_.property "Right identity."
+    (_.test "Right identity."
       (== start
           (|> start _//disjoint (_//each _//out))))))
 
@@ -47,7 +47,7 @@
                   random.nat)
      .let [start (injection sample)
            == (comparison n.=)]]
-    (_.property "Associativity."
+    (_.test "Associativity."
       (== (|> start _//disjoint (_//each (|>> _//disjoint (_//each increase) decrease)))
           (|> start _//disjoint (_//each increase) _//disjoint (_//each decrease))))))
 
diff --git a/stdlib/source/specification/lux/abstract/enum.lux b/stdlib/source/specification/lux/abstract/enum.lux
index a1cf2820e..84cd03321 100644
--- a/stdlib/source/specification/lux/abstract/enum.lux
+++ b/stdlib/source/specification/lux/abstract/enum.lux
@@ -15,7 +15,7 @@
     [sample gen_sample]
     (<| (_.for [/.Enum])
         (all _.and
-             (_.property "Successor and predecessor are inverse functions."
+             (_.test "Successor and predecessor are inverse functions."
                (and (_#= (|> sample _#succ _#pred)
                          sample)
                     (_#= (|> sample _#pred _#succ)
diff --git a/stdlib/source/specification/lux/abstract/equivalence.lux b/stdlib/source/specification/lux/abstract/equivalence.lux
index b2b643d4f..215a015fe 100644
--- a/stdlib/source/specification/lux/abstract/equivalence.lux
+++ b/stdlib/source/specification/lux/abstract/equivalence.lux
@@ -18,7 +18,7 @@
      right random]
     (<| (_.for [/.Equivalence])
         (all _.and
-             (_.property "Reflexivity"
+             (_.test "Reflexivity"
                (/#= left left))
-             (_.property "Symmetry"
+             (_.test "Symmetry"
                (bit#= (/#= left right) (/#= right left)))))))
diff --git a/stdlib/source/specification/lux/abstract/functor.lux b/stdlib/source/specification/lux/abstract/functor.lux
index e1be8eba2..383037e9e 100644
--- a/stdlib/source/specification/lux/abstract/functor.lux
+++ b/stdlib/source/specification/lux/abstract/functor.lux
@@ -26,20 +26,20 @@
   (All (_ f) (-> (Injection f) (Comparison f) (Functor f) Test))
   (do [! random.monad]
     [sample (at ! each injection random.nat)]
-    (_.property "Identity."
-      ((comparison n.=)
-       (@//each function.identity sample)
-       sample))))
+    (_.test "Identity."
+            ((comparison n.=)
+             (@//each function.identity sample)
+             sample))))
 
 (def (homomorphism injection comparison (open "@//[0]"))
   (All (_ f) (-> (Injection f) (Comparison f) (Functor f) Test))
   (do [! random.monad]
     [sample random.nat
      increase (at ! each n.+ random.nat)]
-    (_.property "Homomorphism."
-      ((comparison n.=)
-       (@//each increase (injection sample))
-       (injection (increase sample))))))
+    (_.test "Homomorphism."
+            ((comparison n.=)
+             (@//each increase (injection sample))
+             (injection (increase sample))))))
 
 (def (composition injection comparison (open "@//[0]"))
   (All (_ f) (-> (Injection f) (Comparison f) (Functor f) Test))
@@ -47,10 +47,10 @@
     [sample (at ! each injection random.nat)
      increase (at ! each n.+ random.nat)
      decrease (at ! each n.- random.nat)]
-    (_.property "Composition."
-      ((comparison n.=)
-       (|> sample (@//each increase) (@//each decrease))
-       (|> sample (@//each (|>> increase decrease)))))))
+    (_.test "Composition."
+            ((comparison n.=)
+             (|> sample (@//each increase) (@//each decrease))
+             (|> sample (@//each (|>> increase decrease)))))))
 
 (def .public (spec injection comparison functor)
   (All (_ f) (-> (Injection f) (Comparison f) (Functor f) Test))
diff --git a/stdlib/source/specification/lux/abstract/functor/contravariant.lux b/stdlib/source/specification/lux/abstract/functor/contravariant.lux
index 6099ce42a..3f02e35c8 100644
--- a/stdlib/source/specification/lux/abstract/functor/contravariant.lux
+++ b/stdlib/source/specification/lux/abstract/functor/contravariant.lux
@@ -16,7 +16,7 @@
 
 (def (identity equivalence value (open "@//[0]"))
   (All (_ f a) (-> (Equivalence (f a)) (f a) (Functor f) Test))
-  (_.property "Law of identity."
+  (_.test "Law of identity."
     (equivalence
      (@//each function.identity value)
      value)))
diff --git a/stdlib/source/specification/lux/abstract/interval.lux b/stdlib/source/specification/lux/abstract/interval.lux
index e0a012e9b..51688e4ce 100644
--- a/stdlib/source/specification/lux/abstract/interval.lux
+++ b/stdlib/source/specification/lux/abstract/interval.lux
@@ -16,8 +16,8 @@
       (do random.monad
         [sample gen_sample]
         (all _.and
-             (_.property "No value is bigger than the top."
+             (_.test "No value is bigger than the top."
                (@//< @//top sample))
-             (_.property "No value is smaller than the bottom."
+             (_.test "No value is smaller than the bottom."
                (order.> @//order @//bottom sample))
              ))))
diff --git a/stdlib/source/specification/lux/abstract/monad.lux b/stdlib/source/specification/lux/abstract/monad.lux
index e95ddf67d..3613a3214 100644
--- a/stdlib/source/specification/lux/abstract/monad.lux
+++ b/stdlib/source/specification/lux/abstract/monad.lux
@@ -18,7 +18,7 @@
      morphism (at ! each (function (_ diff)
                            (|>> (n.+ diff) _//in))
                   random.nat)]
-    (_.property "Left identity."
+    (_.test "Left identity."
       ((comparison n.=)
        (|> (injection sample) (_//each morphism) _//conjoint)
        (morphism sample)))))
@@ -27,7 +27,7 @@
   (All (_ f) (-> (Injection f) (Comparison f) (/.Monad f) Test))
   (do random.monad
     [sample random.nat]
-    (_.property "Right identity."
+    (_.test "Right identity."
       ((comparison n.=)
        (|> (injection sample) (_//each _//in) _//conjoint)
        (injection sample)))))
@@ -42,7 +42,7 @@
      decrease (at ! each (function (_ diff)
                            (|>> (n.- diff) _//in))
                   random.nat)]
-    (_.property "Associativity."
+    (_.test "Associativity."
       ((comparison n.=)
        (|> (injection sample) (_//each increase) _//conjoint (_//each decrease) _//conjoint)
        (|> (injection sample) (_//each (|>> increase (_//each decrease) _//conjoint)) _//conjoint)))))
diff --git a/stdlib/source/specification/lux/abstract/monoid.lux b/stdlib/source/specification/lux/abstract/monoid.lux
index dedaca77b..78f387f5f 100644
--- a/stdlib/source/specification/lux/abstract/monoid.lux
+++ b/stdlib/source/specification/lux/abstract/monoid.lux
@@ -20,13 +20,13 @@
      right gen_sample]
     (<| (_.for [/.Monoid])
         (all _.and
-             (_.property "Left identity."
+             (_.test "Left identity."
                (_#= sample
                     (_#composite _#identity sample)))
-             (_.property "Right identity."
+             (_.test "Right identity."
                (_#= sample
                     (_#composite sample _#identity)))
-             (_.property "Associativity."
+             (_.test "Associativity."
                (_#= (_#composite left (_#composite mid right))
                     (_#composite (_#composite left mid) right)))
              ))))
diff --git a/stdlib/source/specification/lux/abstract/order.lux b/stdlib/source/specification/lux/abstract/order.lux
index 4d448c958..3ec435fb8 100644
--- a/stdlib/source/specification/lux/abstract/order.lux
+++ b/stdlib/source/specification/lux/abstract/order.lux
@@ -16,7 +16,7 @@
            (do random.monad
              [parameter generator
               subject generator]
-             (_.property "Values are either ordered, or they are equal. All options(_  are mutually exclusive."
+             (_.test "Values are either ordered, or they are equal. All options(_  are mutually exclusive."
                (cond (@//< parameter subject)
                      (not (or (@//< subject parameter)
                               (@//= parameter subject)))
@@ -34,7 +34,7 @@
                                    (not (or (@//= parameter value)
                                             (@//= subject value))))
                                  generator)]
-             (_.property "Transitive property."
+             (_.test "Transitive property."
                (if (@//< parameter subject)
                  (let [greater? (and (@//< subject extra)
                                      (@//< parameter extra))
diff --git a/stdlib/source/specification/lux/world/console.lux b/stdlib/source/specification/lux/world/console.lux
index 78953c351..cb17b4338 100644
--- a/stdlib/source/specification/lux/world/console.lux
+++ b/stdlib/source/specification/lux/world/console.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -13,7 +12,9 @@
     ["[0]" text (.only)
      ["%" \\format (.only format)]]]
    [math
-    ["[0]" random]]]]
+    ["[0]" random]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" /]])
 
@@ -52,7 +53,7 @@
                    
                    _
                    false)]]
-          (_.coverage' [/.Console]
+          (unit.coverage [/.Console]
             (and can_write!
                  can_read!
                  can_close!))))))
diff --git a/stdlib/source/specification/lux/world/environment.lux b/stdlib/source/specification/lux/world/environment.lux
index 2163fc2e1..fb6600bfe 100644
--- a/stdlib/source/specification/lux/world/environment.lux
+++ b/stdlib/source/specification/lux/world/environment.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -14,7 +13,9 @@
      ["[0]" dictionary]
      ["[0]" list]]]
    [math
-    ["[0]" random]]]]
+    ["[0]" random]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" /]])
 
@@ -24,7 +25,7 @@
     [exit random.int]
     (in (do [! async.monad]
           [environment (/.environment ! subject)]
-          (_.coverage' [/.Environment]
+          (unit.coverage [/.Environment]
             (and (not (dictionary.empty? environment))
                  (list.every? (|>> text.empty? not)
                               (dictionary.keys environment))
diff --git a/stdlib/source/specification/lux/world/file.lux b/stdlib/source/specification/lux/world/file.lux
index dc6cb6528..0f642d2aa 100644
--- a/stdlib/source/specification/lux/world/file.lux
+++ b/stdlib/source/specification/lux/world/file.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -28,7 +27,9 @@
      ["n" nat]]]
    [world
     [time
-     ["[0]" instant (.only Instant) (.use "[1]#[0]" equivalence)]]]]]
+     ["[0]" instant (.only Instant) (.use "[1]#[0]" equivalence)]]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" /]])
 
@@ -41,17 +42,17 @@
       in
       (do async.monad
         [fs (async.future fs)]
-        (all _.and'
-             (_.coverage' [/.rooted]
+        (all unit.and
+             (unit.coverage [/.rooted]
                (let [path (/.rooted fs parent child)]
                  (and (text.starts_with? parent path)
                       (text.ends_with? child path))))
-             (_.coverage' [/.parent]
+             (unit.coverage [/.parent]
                (|> (/.rooted fs parent child)
                    (/.parent fs)
                    (maybe#each (text#= parent))
                    (maybe.else false)))
-             (_.coverage' [/.name]
+             (unit.coverage [/.name]
                (|> (/.rooted fs parent child)
                    (/.name fs)
                    (text#= child)))
@@ -198,7 +199,7 @@
 
          move&delete
          (..move&delete fs parent child alternate_child)])
-      (_.coverage' [/.System]
+      (unit.coverage [/.System]
         (and directory?&make_directory
              file?&write
              file_size&read&append
@@ -228,8 +229,8 @@
 
          cannot_make_directory!/0 (/.make_directories ! fs "")
          cannot_make_directory!/1 (/.make_directories ! fs (at fs separator))])
-      (all _.and'
-           (_.coverage' [/.make_directories]
+      (all unit.and
+           (unit.coverage [/.make_directories]
              (and (not pre_dir/0)
                   (not pre_dir/1)
                   (not pre_dir/2)
@@ -239,7 +240,7 @@
                   post_dir/0
                   post_dir/1
                   post_dir/2))
-           (_.coverage' [/.cannot_make_directory]
+           (unit.coverage [/.cannot_make_directory]
              (and (case cannot_make_directory!/0
                     {try.#Success _}
                     false
@@ -263,12 +264,12 @@
         [fs (async.future fs)
          make_file!/0 (/.make_file ! fs (utf8#encoded file/0) file/0)
          make_file!/1 (/.make_file ! fs (utf8#encoded file/0) file/0)])
-      (all _.and'
-           (_.coverage' [/.make_file]
+      (all unit.and
+           (unit.coverage [/.make_file]
              (case make_file!/0
                {try.#Success _} true
                {try.#Failure error} false))
-           (_.coverage' [/.cannot_make_file]
+           (unit.coverage [/.cannot_make_file]
              (case make_file!/1
                {try.#Success _}
                false
@@ -306,7 +307,7 @@
          post_file/1 (/.exists? ! fs file)
          post_dir/0 (at fs directory? dir)
          post_dir/1 (/.exists? ! fs dir)])
-      (_.coverage' [/.exists?]
+      (unit.coverage [/.exists?]
         (and (not pre_file/0)
              (not pre_file/1)
              (not pre_dir/0)
diff --git a/stdlib/source/specification/lux/world/shell.lux b/stdlib/source/specification/lux/world/shell.lux
index ddf544c55..bf507b536 100644
--- a/stdlib/source/specification/lux/world/shell.lux
+++ b/stdlib/source/specification/lux/world/shell.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -16,7 +15,9 @@
     ["[0]" random]
     [number
      ["n" nat]
-     ["i" int]]]]]
+     ["i" int]]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" / (.only)
    [//
@@ -34,11 +35,11 @@
   )
 
 (def (can_wait! process)
-  (-> (/.Process Async) _.Assertion)
+  (-> (/.Process Async) unit.Test)
   (|> (at process await [])
       (async#each (|>> (try#each (i.= /.normal))
                        (try.else false)
-                       (_.coverage' [/.Exit /.normal])))
+                       (unit.coverage [/.Exit /.normal])))
       async#conjoint))
 
 (def (can_read! expected process)
@@ -80,13 +81,13 @@
                   (do !
                     [can_read! (..can_read! message echo)
                      can_destroy! (..can_destroy! sleep)]
-                    (all _.and'
-                         (_.coverage' <shell_coverage>
+                    (all unit.and
+                         (unit.coverage <shell_coverage>
                            (and can_read!
                                 can_destroy!))
                          (..can_wait! echo)
                          ))
                   
                   _
-                  (_.coverage' <shell_coverage>
+                  (unit.coverage <shell_coverage>
                     false))))))))
diff --git a/stdlib/source/test/aedifex/cache.lux b/stdlib/source/test/aedifex/cache.lux
index 515ca42b7..9dbb8405b 100644
--- a/stdlib/source/test/aedifex/cache.lux
+++ b/stdlib/source/test/aedifex/cache.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except Type)
-   ["_" test (.only Test)]
    [abstract
     ["[0]" monad (.only do)]]
    [control
@@ -25,7 +24,9 @@
      ["n" nat]]]
    [world
     ["[0]" file]
-    ["[0]" program]]]]
+    ["[0]" program]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [//
   ["@[0]" profile]
   ["@[0]" artifact]
@@ -111,7 +112,7 @@
     (in (do async.monad
           [wrote! (/.write_one program fs dependency expected_package)
            read! (/.read_one program fs dependency)]
-          (_.coverage' [/.write_one /.read_one]
+          (unit.coverage [/.write_one /.read_one]
             (<| (try.else false)
                 (do try.monad
                   [_ wrote!
@@ -132,7 +133,7 @@
     (in (do async.monad
           [wrote! (/.write_all program fs expected)
            read! (/.read_all program fs (dictionary.keys expected) //dependency/resolution.empty)]
-          (_.coverage' [/.write_all /.read_all]
+          (unit.coverage [/.write_all /.read_all]
             (<| (try.else false)
                 (do try.monad
                   [_ wrote!
diff --git a/stdlib/source/test/aedifex/cli.lux b/stdlib/source/test/aedifex/cli.lux
index d0aef0468..b83d643b8 100644
--- a/stdlib/source/test/aedifex/cli.lux
+++ b/stdlib/source/test/aedifex/cli.lux
@@ -72,7 +72,7 @@
   Test
   (do random.monad
     [expected ..command]
-    (_.property "Without profile."
+    (_.test "Without profile."
       (|> expected
           ..format
           (cli.result /.command)
@@ -89,7 +89,7 @@
   (do random.monad
     [expected_profile (random.alphabetic 1)
      expected_command ..command]
-    (_.property "With profile."
+    (_.test "With profile."
       (|> expected_command
           ..format
           (list.partial "with" expected_profile)
diff --git a/stdlib/source/test/aedifex/command/auto.lux b/stdlib/source/test/aedifex/command/auto.lux
index 8cc8177a1..10c249e3e 100644
--- a/stdlib/source/test/aedifex/command/auto.lux
+++ b/stdlib/source/test/aedifex/command/auto.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -31,7 +30,9 @@
     ["[0]" file
      ["[0]" watch]]
     [time
-     ["[0]" instant]]]]]
+     ["[0]" instant]]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  ["[0]" //
   ["$[0]" version]
   ["$[0]" build]]
@@ -120,6 +121,6 @@
                                                              (at ! each (n.= expected_runs)))]
                                 (in {try.#Success (and correct_number_of_runs!
                                                        no_dangling_process!)})))]
-                   (_.coverage' [/.do!]
+                   (unit.coverage [/.do!]
                      (try.else false verdict))))
              ))))
diff --git a/stdlib/source/test/aedifex/command/build.lux b/stdlib/source/test/aedifex/command/build.lux
index 7ae2a8c72..81907a9ad 100644
--- a/stdlib/source/test/aedifex/command/build.lux
+++ b/stdlib/source/test/aedifex/command/build.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -22,7 +21,9 @@
    [world
     ["[0]" file]
     ["[0]" shell (.only Shell)]
-    ["[0]" program]]]]
+    ["[0]" program]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  ["[0]" //
   ["@[0]" version]
   ["$/[1]" //
@@ -162,7 +163,7 @@
              (in (do async.monad
                    [outcome (/.do! (@version.echo "") (program.async (program.mock environment.empty home working_directory)) fs shell ///dependency/resolution.empty
                                    (with_target empty_profile))]
-                   (_.coverage' [/.no_specified_program]
+                   (unit.coverage [/.no_specified_program]
                      (case outcome
                        {try.#Success _}
                        false
@@ -171,7 +172,7 @@
                        (exception.match? /.no_specified_program error)))))
              (in (do async.monad
                    [outcome (/.do! (@version.echo "") (program.async (program.mock environment.empty home working_directory)) fs shell ///dependency/resolution.empty profile)]
-                   (_.coverage' [/.Lux /.no_available_lux]
+                   (unit.coverage [/.Lux /.no_available_lux]
                      (case outcome
                        {try.#Success _}
                        false
@@ -190,15 +191,15 @@
                                  end (at console read_line [])]
                                 (in (and (text#= /.start start)
                                          (text#= /.success end))))]
-                     (_.coverage' [/.do!
-                                   /.lux_group
-                                   /.jvm_lux_name
-                                   /.js_lux_name
-                                   /.python_lux_name
-                                   /.lua_lux_name
-                                   /.ruby_lux_name
-                                   /.start
-                                   /.success]
+                     (unit.coverage [/.do!
+                                     /.lux_group
+                                     /.jvm_lux_name
+                                     /.js_lux_name
+                                     /.python_lux_name
+                                     /.lua_lux_name
+                                     /.ruby_lux_name
+                                     /.start
+                                     /.success]
                        (try.else false verdict)))))
              (do !
                [.let [console (@version.echo "")]
@@ -212,7 +213,7 @@
                                  end (at console read_line [])]
                                 (in (and (text#= /.start start)
                                          (text#= /.failure end))))]
-                     (_.coverage' [/.failure]
+                     (unit.coverage [/.failure]
                        (try.else false verdict)))))
              (do !
                [expected/0 (random.alphabetic 5)
@@ -243,7 +244,7 @@
                                                            (text#= expected/1 actual/1)
                                                            (text#= expected/2 actual/2)
                                                            end!)))]
-                                       (_.coverage' [<log!>]
+                                       (unit.coverage [<log!>]
                                          (try.else false verdict)))))]
 
                               [#0 /.log_output!]
diff --git a/stdlib/source/test/aedifex/command/clean.lux b/stdlib/source/test/aedifex/command/clean.lux
index f4e220aa1..bbc47ccfe 100644
--- a/stdlib/source/test/aedifex/command/clean.lux
+++ b/stdlib/source/test/aedifex/command/clean.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     ["[0]" monad (.only do)]]
    [control
@@ -21,7 +20,9 @@
     [number
      ["n" nat]]]
    [world
-    ["[0]" file (.only Path)]]]]
+    ["[0]" file (.only Path)]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [//
   ["@[0]" version]
   [//
@@ -115,5 +116,5 @@
                                   (and sub_exists!/pre
                                        (not sub_exists!/post))
                                   (text#= (/.success target_path) logging))))]
-              (_.coverage' [/.do! /.success]
+              (unit.coverage [/.do! /.success]
                 (try.else false verdict)))))))
diff --git a/stdlib/source/test/aedifex/command/deploy.lux b/stdlib/source/test/aedifex/command/deploy.lux
index 6a146cc44..dfa352553 100644
--- a/stdlib/source/test/aedifex/command/deploy.lux
+++ b/stdlib/source/test/aedifex/command/deploy.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -32,7 +31,9 @@
    [world
     ["[0]" file]
     ["[0]" program (.only Program)]
-    ["[0]" shell]]]]
+    ["[0]" shell]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [//
   ["$[0]" build]
   ["$[0]" install]
@@ -130,5 +131,5 @@
                                   deployed_pom!
                                   deployed_sha-1!
                                   deployed_md5!)))]
-              (_.coverage' [/.do! /.success]
+              (unit.coverage [/.do! /.success]
                 (try.else false verdict)))))))
diff --git a/stdlib/source/test/aedifex/command/deps.lux b/stdlib/source/test/aedifex/command/deps.lux
index 4d08505b0..905afb575 100644
--- a/stdlib/source/test/aedifex/command/deps.lux
+++ b/stdlib/source/test/aedifex/command/deps.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]
     ["[0]" predicate]]
@@ -25,7 +24,9 @@
     ["[0]" random (.only Random)]]
    [world
     ["[0]" program]
-    ["[0]" file]]]]
+    ["[0]" file]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  ["[0]" //
   ["@[0]" version]
   ["$/[1]" //
@@ -126,5 +127,5 @@
                                   
                                   had_dependee_after!
                                   had_depender_after!)))]
-              (_.coverage' [/.do!]
+              (unit.coverage [/.do!]
                 (try.else false verdict)))))))
diff --git a/stdlib/source/test/aedifex/command/install.lux b/stdlib/source/test/aedifex/command/install.lux
index 3221f640a..930cc17f4 100644
--- a/stdlib/source/test/aedifex/command/install.lux
+++ b/stdlib/source/test/aedifex/command/install.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     ["[0]" monad (.only do)]]
    [control
@@ -21,7 +20,9 @@
     ["[0]" random]]
    [world
     ["[0]" file]
-    ["[0]" program (.only Program)]]]]
+    ["[0]" program (.only Program)]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [//
   ["$[0]" version]
   [//
@@ -91,13 +92,13 @@
                               (in (and succeeded!
                                        library_exists!
                                        pom_exists!)))]
-                   (_.coverage' [/.do! /.success]
+                   (unit.coverage [/.do! /.success]
                      (try.else false verdict))))
              (in (do [! async.monad]
                    [.let [fs (file.mock /)
                           program (program.async (program.mock environment.empty home working_directory))]
                     logging (..execute! program fs (has ///.#identity {.#None} sample))]
-                   (_.coverage' [/.failure]
+                   (unit.coverage [/.failure]
                      (|> logging
                          (try#each (text#= /.failure))
                          (try.else false)))))
diff --git a/stdlib/source/test/aedifex/command/pom.lux b/stdlib/source/test/aedifex/command/pom.lux
index 9390cb51b..21deefa0f 100644
--- a/stdlib/source/test/aedifex/command/pom.lux
+++ b/stdlib/source/test/aedifex/command/pom.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -18,7 +17,9 @@
    [math
     ["[0]" random]]
    [world
-    ["[0]" file]]]]
+    ["[0]" file]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [//
   ["@[0]" version]
   [//
@@ -57,11 +58,11 @@
                                     (binary#= expected actual)]]
                              (in (and logging!
                                       expected_content!)))]
-                  (_.coverage' [/.do! /.success]
+                  (unit.coverage [/.do! /.success]
                     (try.else false verdict)))
                 
                 {try.#Failure error}
-                (_.coverage' [/.do!]
+                (unit.coverage [/.do!]
                   (case (the ///.#identity sample)
                     {.#Some _}
                     false
diff --git a/stdlib/source/test/aedifex/command/test.lux b/stdlib/source/test/aedifex/command/test.lux
index d65fbd491..440123f65 100644
--- a/stdlib/source/test/aedifex/command/test.lux
+++ b/stdlib/source/test/aedifex/command/test.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -21,7 +20,9 @@
    [world
     ["[0]" file]
     ["[0]" shell]
-    ["[0]" program]]]]
+    ["[0]" program]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  ["[0]" //
   ["@[0]" version]
   ["@[0]" build]
@@ -74,8 +75,8 @@
                                               (text#= //build.success build_end))
                                          (and (text#= /.start test_start)
                                               (text#= /.success test_end)))))]
-                     (_.coverage' [/.do!
-                                   /.start /.success]
+                     (unit.coverage [/.do!
+                                     /.start /.success]
                        (try.else false verdict)))))
              (let [fs (file.mock (at file.default separator))
                    console (@version.echo "")]
@@ -110,6 +111,6 @@
                                               (text#= //build.success build_end))
                                          (and (text#= /.start test_start)
                                               (text#= /.failure test_end)))))]
-                     (_.coverage' [/.failure]
+                     (unit.coverage [/.failure]
                        (try.else false verdict)))))
              ))))
diff --git a/stdlib/source/test/aedifex/command/version.lux b/stdlib/source/test/aedifex/command/version.lux
index fa22f379b..1becba8d2 100644
--- a/stdlib/source/test/aedifex/command/version.lux
+++ b/stdlib/source/test/aedifex/command/version.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -20,7 +19,9 @@
     [compiler
      ["[0]" version]]]
    [world
-    ["[0]" console (.only Console Mock)]]]]
+    ["[0]" console (.only Console Mock)]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [///
   ["@[0]" profile]]
  [\\program
@@ -73,5 +74,5 @@
                           logging (at console read_line [])]
                          (in (text#= (version.format lux_version.latest)
                                      logging)))]
-              (_.coverage' [/.do!]
+              (unit.coverage [/.do!]
                 (try.else false verdict)))))))
diff --git a/stdlib/source/test/aedifex/dependency/deployment.lux b/stdlib/source/test/aedifex/dependency/deployment.lux
index fee8caf9d..2eeb0abb8 100644
--- a/stdlib/source/test/aedifex/dependency/deployment.lux
+++ b/stdlib/source/test/aedifex/dependency/deployment.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]
     ["[0]" hash (.only Hash)]]
@@ -31,7 +30,9 @@
      ["[0]" http
       ["[1]" client]
       ["[1]/[0]" status]
-      ["@[1]" /]]]]]]
+      ["@[1]" /]]]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  ["$[0]" // (.only)
   ["[1]/" //
    ["[1][0]" package]]]
@@ -159,7 +160,7 @@
                (in (do async.monad
                      [?outcome (/.one repository dependency package)
                       cache (async.future (atom.read! cache))]
-                     (_.coverage' [/.one]
+                     (unit.coverage [/.one]
                        (|> ?outcome
                            (try#each (verify_one 1 address package cache expected_artifact))
                            (try.else false))))))
@@ -182,7 +183,7 @@
                (in (do async.monad
                      [?outcome (/.all repository resolution)
                       cache (async.future (atom.read! cache))]
-                     (_.coverage' [/.all]
+                     (unit.coverage [/.all]
                        (|> ?outcome
                            (try#each (function (_ actual_artifacts)
                                        (let [expected_deployments!
diff --git a/stdlib/source/test/aedifex/dependency/resolution.lux b/stdlib/source/test/aedifex/dependency/resolution.lux
index e724392a5..153d4b4ac 100644
--- a/stdlib/source/test/aedifex/dependency/resolution.lux
+++ b/stdlib/source/test/aedifex/dependency/resolution.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except all)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]
     ["[0]" predicate]
@@ -26,7 +25,9 @@
      ["[0]" set]
      ["[0]" list]]]
    [math
-    ["[0]" random (.only Random)]]]]
+    ["[0]" random (.only Random)]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  ["$[0]" ///
   ["[1][0]" package]
   ["[1][0]" repository]
@@ -262,7 +263,7 @@
                     [actual_package (/.one (///repository.mock good [])
                                            [///dependency.#artifact expected_artifact
                                             ///dependency.#type ///artifact/type.lux_library])]
-                    (_.coverage' [/.one]
+                    (unit.coverage [/.one]
                       (case actual_package
                         {try.#Success actual_package}
                         (at ///package.equivalence =
@@ -276,7 +277,7 @@
                            [actual_package (/.one (///repository.mock <bad> [])
                                                   [///dependency.#artifact expected_artifact
                                                    ///dependency.#type ///artifact/type.lux_library])]
-                           (_.coverage' [<exception>]
+                           (unit.coverage [<exception>]
                              (case actual_package
                                {try.#Failure error}
                                (exception.match? <exception> error)
@@ -311,7 +312,7 @@
                                              (///repository.mock good []))
                                        [///dependency.#artifact expected_artifact
                                         ///dependency.#type ///artifact/type.lux_library])]
-                (_.coverage' [/.any]
+                (unit.coverage [/.any]
                   (case actual_package
                     {try.#Success actual_package}
                     (at ///package.equivalence =
@@ -327,7 +328,7 @@
                                              (///repository.mock bad_md5 []))
                                        [///dependency.#artifact expected_artifact
                                         ///dependency.#type ///artifact/type.lux_library])]
-                (_.coverage' [/.cannot_resolve]
+                (unit.coverage [/.cannot_resolve]
                   (case actual_package
                     {try.#Failure error}
                     (exception.match? /.cannot_resolve error)
@@ -416,7 +417,7 @@
                                                           (///repository.mock ..nope []))
                                                         (list depender)
                                                         /.empty)]
-                (_.coverage' [/.all]
+                (unit.coverage [/.all]
                   (and (dictionary.key? resolution depender)
                        (list.any? (///dependency#= depender) successes)
                        
diff --git a/stdlib/source/test/aedifex/input.lux b/stdlib/source/test/aedifex/input.lux
index 23192f590..b9f8195f6 100644
--- a/stdlib/source/test/aedifex/input.lux
+++ b/stdlib/source/test/aedifex/input.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -18,7 +17,9 @@
    [math
     ["[0]" random]]
    [world
-    ["[0]" file]]]]
+    ["[0]" file]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [//
   ["$[0]" profile]]
  [\\program
@@ -63,5 +64,5 @@
                                      (revised //.#sources ..with_default_source)
                                      (revised //.#repositories ..with_default_repository))
                                  actual)))]
-              (_.coverage' [/.read]
+              (unit.coverage [/.read]
                 (try.else false verdict)))))))
diff --git a/stdlib/source/test/aedifex/metadata/artifact.lux b/stdlib/source/test/aedifex/metadata/artifact.lux
index ed5b95b3b..1e05fbc3a 100644
--- a/stdlib/source/test/aedifex/metadata/artifact.lux
+++ b/stdlib/source/test/aedifex/metadata/artifact.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]
     [\\specification
@@ -34,7 +33,9 @@
      ["[0]" year]
      ["[0]" month]
      ["[0]" instant]
-     ["[0]" duration]]]]]
+     ["[0]" duration]]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\program
   ["[0]" / (.only)
    ["/[1]" // (.only)
@@ -105,7 +106,7 @@
                (in (do async.monad
                      [wrote? (/.write repository artifact expected)
                       actual (/.read repository artifact)]
-                     (_.coverage' [/.write /.read]
+                     (unit.coverage [/.write /.read]
                        (and (case wrote?
                               {try.#Success _} true
                               {try.#Failure _} false)
diff --git a/stdlib/source/test/aedifex/metadata/snapshot.lux b/stdlib/source/test/aedifex/metadata/snapshot.lux
index 773dd262b..983b78d6d 100644
--- a/stdlib/source/test/aedifex/metadata/snapshot.lux
+++ b/stdlib/source/test/aedifex/metadata/snapshot.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]
     [\\specification
@@ -34,7 +33,9 @@
      ["[0]" year]
      ["[0]" month]
      ["[0]" instant (.only Instant)]
-     ["[0]" duration]]]]]
+     ["[0]" duration]]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  ["$[0]" ///
   ["[1][0]" artifact
    ["[1]/[0]" type]
@@ -117,7 +118,7 @@
                (in (do async.monad
                      [wrote? (/.write repository artifact expected)
                       actual (/.read repository artifact)]
-                     (_.coverage' [/.write /.read]
+                     (unit.coverage [/.write /.read]
                        (and (case wrote?
                               {try.#Success _} true
                               {try.#Failure _} false)
diff --git a/stdlib/source/test/aedifex/repository/local.lux b/stdlib/source/test/aedifex/repository/local.lux
index 8eadfd24c..811a8e4e9 100644
--- a/stdlib/source/test/aedifex/repository/local.lux
+++ b/stdlib/source/test/aedifex/repository/local.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -19,7 +18,9 @@
     ["[0]" random]]
    [world
     ["[0]" file]
-    ["[0]" program]]]]
+    ["[0]" program]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\program
   ["[0]" /]])
 
@@ -42,7 +43,7 @@
                    [before_upload (at repo download uri)
                     _ (at repo upload uri expected)
                     actual (at repo download uri)]
-                   (_.coverage' [/.repository]
+                   (unit.coverage [/.repository]
                      (and (case before_upload
                             {try.#Success _} false
                             {try.#Failure _} true)
diff --git a/stdlib/source/test/lux/abstract/equivalence.lux b/stdlib/source/test/lux/abstract/equivalence.lux
index 0ea65a1ca..4a747951f 100644
--- a/stdlib/source/test/lux/abstract/equivalence.lux
+++ b/stdlib/source/test/lux/abstract/equivalence.lux
@@ -88,7 +88,7 @@
   Test
   (<| (_.covering \\polytypic._)
       (_.for [\\polytypic.equivalence]
-             (for @.old (_.property "PLACEHOLDER" true)
+             (for @.old (_.test "PLACEHOLDER" true)
                   (\\specification.spec ..equivalence ..random)))))
 
 (def .public test
diff --git a/stdlib/source/test/lux/abstract/interval.lux b/stdlib/source/test/lux/abstract/interval.lux
index 438a02394..8953e1d80 100644
--- a/stdlib/source/test/lux/abstract/interval.lux
+++ b/stdlib/source/test/lux/abstract/interval.lux
@@ -93,11 +93,11 @@
      left_outer ..outer
      right_outer ..outer]
     (all _.and
-         (_.property "The union of an interval to itself yields the same interval."
+         (_.test "The union of an interval to itself yields the same interval."
            (/#= some_interval (/.union some_interval some_interval)))
-         (_.property "The union of 2 inner intervals is another inner interval."
+         (_.test "The union of 2 inner intervals is another inner interval."
            (/.inner? (/.union left_inner right_inner)))
-         (_.property "The union of 2 outer intervals yields an inner interval when their complements don't overlap, and an outer when they do."
+         (_.test "The union of 2 outer intervals yields an inner interval when their complements don't overlap, and an outer when they do."
            (if (/.overlaps? (/.complement left_outer) (/.complement right_outer))
              (/.outer? (/.union left_outer right_outer))
              (/.inner? (/.union left_outer right_outer))))
@@ -114,13 +114,13 @@
      left_outer ..outer
      right_outer ..outer]
     (all _.and
-         (_.property "The intersection of an interval to itself yields the same interval."
+         (_.test "The intersection of an interval to itself yields the same interval."
            (/#= some_interval (/.intersection some_interval some_interval)))
-         (_.property "The intersection of 2 inner intervals yields an inner interval when they overlap, and an outer when they don't."
+         (_.test "The intersection of 2 inner intervals yields an inner interval when they overlap, and an outer when they don't."
            (if (/.overlaps? left_inner right_inner)
              (/.inner? (/.intersection left_inner right_inner))
              (/.outer? (/.intersection left_inner right_inner))))
-         (_.property "The intersection of 2 outer intervals is another outer interval."
+         (_.test "The intersection of 2 outer intervals is another outer interval."
            (/.outer? (/.intersection left_outer right_outer)))
          )))
 
@@ -129,9 +129,9 @@
   (do random.monad
     [some_interval ..interval]
     (all _.and
-         (_.property "The complement of a complement is the same as the original."
+         (_.test "The complement of a complement is the same as the original."
            (/#= some_interval (|> some_interval /.complement /.complement)))
-         (_.property "The complement of an interval does not overlap it."
+         (_.test "The complement of an interval does not overlap it."
            (not (/.overlaps? some_interval (/.complement some_interval))))
          )))
 
@@ -199,22 +199,22 @@
                                          _
                                          (undefined)))))]
     (all _.and
-         (_.property "Every interval is nested into itself."
+         (_.test "Every interval is nested into itself."
            (/.nested? some_interval some_interval))
          (let [small_inner (/.between n.enum x1 x2)
                large_inner (/.between n.enum x0 x3)]
-           (_.property "Inner intervals can be nested inside one another."
+           (_.test "Inner intervals can be nested inside one another."
              (and (/.nested? large_inner small_inner)
                   (not (/.nested? small_inner large_inner)))))
          (let [small_outer (/.between n.enum x2 x1)
                large_outer (/.between n.enum x3 x0)]
-           (_.property "Outer intervals can be nested inside one another."
+           (_.test "Outer intervals can be nested inside one another."
              (and (/.nested? small_outer large_outer)
                   (not (/.nested? large_outer small_outer)))))
          (let [left_inner (/.between n.enum x0 x1)
                right_inner (/.between n.enum x2 x3)
                outer (/.between n.enum x0 x3)]
-           (_.property "Inners can be nested inside outers."
+           (_.test "Inners can be nested inside outers."
              (and (/.nested? outer left_inner)
                   (/.nested? outer right_inner))))
          )))
@@ -233,17 +233,17 @@
                                          _
                                          (undefined)))))]
     (all _.and
-         (_.property "No interval overlaps with itself."
+         (_.test "No interval overlaps with itself."
            (not (/.overlaps? some_interval some_interval)))
          (let [left_inner (/.between n.enum x0 x2)
                right_inner (/.between n.enum x1 x3)]
-           (_.property "Inner intervals can overlap one another."
+           (_.test "Inner intervals can overlap one another."
              (and (/.overlaps? left_inner right_inner)
                   (/.overlaps? right_inner left_inner))))
          (let [left_inner (/.between n.enum x0 x2)
                right_inner (/.between n.enum x1 x3)
                outer (/.between n.enum x1 x2)]
-           (_.property "Inners can overlap outers."
+           (_.test "Inners can overlap outers."
              (and (/.overlaps? outer left_inner)
                   (/.overlaps? outer right_inner))))
          )))
diff --git a/stdlib/source/test/lux/control/concurrency/actor.lux b/stdlib/source/test/lux/control/concurrency/actor.lux
index d3ecb4887..e4f3755c2 100644
--- a/stdlib/source/test/lux/control/concurrency/actor.lux
+++ b/stdlib/source/test/lux/control/concurrency/actor.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -17,7 +16,9 @@
    [math
     ["[0]" random]
     [number
-     ["n" nat]]]]]
+     ["n" nat]]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" / (.only)
    [//
@@ -101,7 +102,7 @@
                                         (/.poison! actor)))
                       _ (async.delay 100)
                       result (async.future (async.value read))]
-                     (_.coverage' [/.poisoned]
+                     (unit.coverage [/.poisoned]
                        (case result
                          {.#Some error}
                          (exception.match? /.poisoned error)
@@ -114,8 +115,8 @@
                                           [actor (/.spawn! /.default 0)
                                            sent? (/.mail! ++! actor)]
                                           (in (..mailed? sent?))))]
-                   (_.coverage' [/.Behavior /.Mail
-                                 /.default /.spawn! /.mail!]
+                   (unit.coverage [/.Behavior /.Mail
+                                   /.default /.spawn! /.mail!]
                      sent?)))
 
              (in (do async.monad
@@ -123,7 +124,7 @@
                                            [counter (/.spawn! /.default 0)
                                             _ (/.poison! counter)]
                                            (/.mail! ++! counter)))]
-                   (_.coverage' [/.dead]
+                   (unit.coverage [/.dead]
                      (case result
                        {try.#Success outcome}
                        false
@@ -141,7 +142,7 @@
                                               alive? (/.alive? actor)
                                               obituary (/.obituary' actor)]
                                              (in {try.#Success [actor sent? alive? obituary]})))]
-                     (_.coverage' [/.Obituary /.obituary']
+                     (unit.coverage [/.Obituary /.obituary']
                        (case result
                          {try.#Success [actor sent? alive? {.#Some [error state (list single_pending_message)]}]}
                          (and (..mailed? sent?)
@@ -162,7 +163,7 @@
                              (in (and (n.= 1 output_1)
                                       (n.= 2 output_2)
                                       (n.= 3 output_3))))]
-                   (_.coverage' [/.Message /.tell!]
+                   (unit.coverage [/.Message /.tell!]
                      (case result
                        {try.#Success outcome}
                        outcome
@@ -196,6 +197,6 @@
                                (in agent)))
                       _ (/.obituary agent)
                       actual (async.future (atom.read! sink))]
-                     (_.coverage' [/.Stop /.observe! /.obituary]
+                     (unit.coverage [/.Stop /.observe! /.obituary]
                        (at (list.equivalence n.equivalence) = expected (sequence.list actual))))))
              ))))
diff --git a/stdlib/source/test/lux/control/concurrency/async.lux b/stdlib/source/test/lux/control/concurrency/async.lux
index 42d938ddd..3cdaf2da4 100644
--- a/stdlib/source/test/lux/control/concurrency/async.lux
+++ b/stdlib/source/test/lux/control/concurrency/async.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]
     [\\specification
@@ -21,7 +20,9 @@
    [world
     [time
      ["[0]" instant]
-     ["[0]" duration]]]]]
+     ["[0]" duration]]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" / (.only)
    [//
@@ -73,22 +74,22 @@
                                                (/.async []))]
                     resolved? (/.future (resolver expected))
                     actual async]
-                   (_.coverage' [/.Async /.Resolver /.async]
+                   (unit.coverage [/.Async /.Resolver /.async]
                      (and resolved?
                           (n.= expected actual)))))
              (in (do /.monad
                    [actual (/.resolved expected)]
-                   (_.coverage' [/.resolved]
+                   (unit.coverage [/.resolved]
                      (n.= expected actual))))
              (in (do /.monad
                    [actual (/.future (io.io expected))]
-                   (_.coverage' [/.future]
+                   (unit.coverage [/.future]
                      (n.= expected actual))))
              (in (do /.monad
                    [pre (/.future instant.now)
                     actual (/.schedule! waiting_time (io.io expected))
                     post (/.future instant.now)]
-                   (_.coverage' [/.schedule!]
+                   (unit.coverage [/.schedule!]
                      (and (n.= expected actual)
                           (i.>= (.int waiting_time)
                                 (duration.millis (instant.span pre post)))))))
@@ -96,20 +97,20 @@
                    [pre (/.future instant.now)
                     _ (/.delay waiting_time)
                     post (/.future instant.now)]
-                   (_.coverage' [/.delay]
+                   (unit.coverage [/.delay]
                      (i.>= (.int waiting_time)
                            (duration.millis (instant.span pre post))))))
              (in (do /.monad
                    [[leftA rightA] (/.and (/.future (io.io leftE))
                                           (/.future (io.io rightE)))]
-                   (_.coverage' [/.and]
+                   (unit.coverage [/.and]
                      (n.= (n.+ leftE rightE)
                           (n.+ leftA rightA)))))
              (in (do /.monad
                    [pre (/.future instant.now)
                     actual (/.after waiting_time expected)
                     post (/.future instant.now)]
-                   (_.coverage' [/.after]
+                   (unit.coverage [/.after]
                      (and (n.= expected actual)
                           (i.>= (.int waiting_time)
                                 (duration.millis (instant.span pre post)))))))
@@ -118,7 +119,7 @@
                                 (/.after waiting_time dummy))
                     ?right (/.or (/.after waiting_time dummy)
                                  (in rightE))]
-                   (_.coverage' [/.or]
+                   (unit.coverage [/.or]
                      (case [?left ?right]
                        [{.#Left leftA} {.#Right rightA}]
                        (n.= (n.+ leftE rightE)
@@ -131,7 +132,7 @@
                                     (/.after waiting_time dummy))
                     rightA (/.either (/.after waiting_time dummy)
                                      (in rightE))]
-                   (_.coverage' [/.either]
+                   (unit.coverage [/.either]
                      (n.= (n.+ leftE rightE)
                           (n.+ leftA rightA)))))
              (in (do /.monad
@@ -139,7 +140,7 @@
                     .let [[async resolver] (is [(/.Async Nat) (/.Resolver Nat)]
                                                (/.async []))]
                     ?never (/.future (/.value async))]
-                   (_.coverage' [/.value]
+                   (unit.coverage [/.value]
                      (case [?actual ?never]
                        [{.#Some actual} {.#None}]
                        (n.= expected actual)
@@ -151,13 +152,13 @@
                     .let [[async resolver] (is [(/.Async Nat) (/.Resolver Nat)]
                                                (/.async []))]
                     nope (/.future (/.resolved? async))]
-                   (_.coverage' [/.resolved?]
+                   (unit.coverage [/.resolved?]
                      (and yep
                           (not nope)))))
              (in (do /.monad
                    [?none (/.within 0 (/.after waiting_time dummy))
                     ?actual (/.within waiting_time (in expected))]
-                   (_.coverage' [/.within]
+                   (unit.coverage [/.within]
                      (case [?none ?actual]
                        [{.#None} {.#Some actual}]
                        (n.= expected actual)
@@ -171,6 +172,6 @@
                                            (atom.write! value box))
                                          (/.resolved expected)))
                     actual (/.future (atom.read! box))]
-                   (_.coverage' [/.upon!]
+                   (unit.coverage [/.upon!]
                      (n.= expected actual))))
              ))))
diff --git a/stdlib/source/test/lux/control/concurrency/frp.lux b/stdlib/source/test/lux/control/concurrency/frp.lux
index 05fd6360c..147b8d2cb 100644
--- a/stdlib/source/test/lux/control/concurrency/frp.lux
+++ b/stdlib/source/test/lux/control/concurrency/frp.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]
     [\\specification
@@ -19,7 +18,9 @@
    [math
     ["[0]" random]
     [number
-     ["n" nat]]]]]
+     ["n" nat]]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" / (.only)
    [//
@@ -121,14 +122,14 @@
                                  async.resolved
                                  /.of_async
                                  /.list)]
-                     (_.coverage' [/.of_async /.list]
+                     (unit.coverage [/.of_async /.list]
                        (list#= (list sample)
                                output))))
                (in (do async.monad
                      [output (|> inputs
                                  (/.sequential 0)
                                  /.list)]
-                     (_.coverage' [/.sequential]
+                     (unit.coverage [/.sequential]
                        (list#= inputs
                                output))))
                (in (do async.monad
@@ -136,7 +137,7 @@
                                  (/.sequential 0)
                                  (/.only n.even?)
                                  /.list)]
-                     (_.coverage' [/.only]
+                     (unit.coverage [/.only]
                        (list#= (list.only n.even? inputs)
                                output))))
                (in (do [! async.monad]
@@ -160,14 +161,14 @@
                                    atom.read!
                                    async.future
                                    (at ! each sequence.list))]
-                     (_.coverage' [/.Subscriber /.subscribe!]
+                     (unit.coverage [/.Subscriber /.subscribe!]
                        (list#= inputs listened))))
                (in (do async.monad
                      [actual (/.mix (function (_ input total)
                                       (async.resolved (n.+ input total)))
                                     0
                                     (/.sequential 0 inputs))]
-                     (_.coverage' [/.mix]
+                     (unit.coverage [/.mix]
                        (n.= (list#mix n.+ 0 inputs)
                             actual))))
                (in (do async.monad
@@ -177,7 +178,7 @@
                                             (async.resolved (n.+ input total)))
                                           0)
                                  /.list)]
-                     (_.coverage' [/.mixes]
+                     (unit.coverage [/.mixes]
                        (list#= (list.mixes n.+ 0 inputs)
                                actual))))
                (in (do async.monad
@@ -187,7 +188,7 @@
                                  (/.sequential 0)
                                  (/.distinct n.equivalence)
                                  /.list)]
-                     (_.coverage' [/.distinct]
+                     (unit.coverage [/.distinct]
                        (list#= (list distinct/0 distinct/1 distinct/2)
                                actual))))
                (do !
@@ -201,12 +202,12 @@
                                    
                                    enough_polls!
                                    (n.= amount_of_polls (list.size actual))]]
-                            (_.coverage' [/.poll]
+                            (unit.coverage [/.poll]
                               (and correct_values!
                                    enough_polls!))))
                       (in (do [! async.monad]
                             [actual (..take_amount amount_of_polls (/.periodic polling_delay))]
-                            (_.coverage' [/.periodic]
+                            (unit.coverage [/.periodic]
                               (n.= amount_of_polls (list.size actual)))))))
                (in (do async.monad
                      [.let [max_iterations 10]
@@ -218,7 +219,7 @@
                                                              current]}
                                                     {.#None}))))
                                  /.list)]
-                     (_.coverage' [/.iterations]
+                     (unit.coverage [/.iterations]
                        (and (n.= max_iterations (list.size actual))
                             (list#= (list.mixes n.+ sample (list.repeated (-- max_iterations) shift))
                                     actual)))))
diff --git a/stdlib/source/test/lux/control/concurrency/semaphore.lux b/stdlib/source/test/lux/control/concurrency/semaphore.lux
index ac4bd63b3..5254ce02f 100644
--- a/stdlib/source/test/lux/control/concurrency/semaphore.lux
+++ b/stdlib/source/test/lux/control/concurrency/semaphore.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     ["[0]" monad (.only do)]
     ["[0]" enum]]
@@ -26,7 +25,9 @@
    [meta
     ["@" target]
     [type
-     ["[0]" refinement]]]]]
+     ["[0]" refinement]]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" /]])
 
@@ -43,7 +44,7 @@
                  .let [semaphore (/.semaphore initial_open_positions)]]
                 (in (do async.monad
                       [result (async.within ..delay (/.wait! semaphore))]
-                      (_.coverage' [/.semaphore]
+                      (unit.coverage [/.semaphore]
                         (case result
                           {.#Some _}
                           true
@@ -56,7 +57,7 @@
                 (in (do [! async.monad]
                       [_ (monad.each ! /.wait! (list.repeated initial_open_positions semaphore))
                        result (async.within ..delay (/.wait! semaphore))]
-                      (_.coverage' [/.wait!]
+                      (unit.coverage [/.wait!]
                         (case result
                           {.#Some _}
                           false
@@ -72,7 +73,7 @@
                        result/0 (async.within ..delay block)
                        open_positions (/.signal! semaphore)
                        result/1 (async.within ..delay block)]
-                      (_.coverage' [/.signal!]
+                      (unit.coverage [/.signal!]
                         (case [result/0 result/1 open_positions]
                           [{.#None} {.#Some _} {try.#Success +0}]
                           true
@@ -84,7 +85,7 @@
                  .let [semaphore (/.semaphore initial_open_positions)]]
                 (in (do async.monad
                       [outcome (/.signal! semaphore)]
-                      (_.coverage' [/.semaphore_is_maxed_out]
+                      (unit.coverage [/.semaphore_is_maxed_out]
                         (case outcome
                           {try.#Failure error}
                           (exception.match? /.semaphore_is_maxed_out error)
@@ -123,7 +124,7 @@
                       [_ processA
                        _ processB
                        .let [outcome (io.run! (atom.read! resource))]]
-                      (_.coverage' [/.mutex /.synchronize!]
+                      (unit.coverage [/.mutex /.synchronize!]
                         (or (text#= (format expected_As expected_Bs)
                                     outcome)
                             (text#= (format expected_Bs expected_As)
@@ -171,7 +172,7 @@
                                             (waiter resource barrier id))))
                              (monad.all !))
                        .let [outcome (io.run! (atom.read! resource))]]
-                      (_.coverage' [/.barrier /.block!]
+                      (unit.coverage [/.barrier /.block!]
                         (and (text.ends_with? expected_ending outcome)
                              (list.every? (function (_ id)
                                             (text.contains? (%.nat id) outcome))
diff --git a/stdlib/source/test/lux/control/concurrency/stm.lux b/stdlib/source/test/lux/control/concurrency/stm.lux
index c5f5ce325..cb6fc3e81 100644
--- a/stdlib/source/test/lux/control/concurrency/stm.lux
+++ b/stdlib/source/test/lux/control/concurrency/stm.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     ["[0]" monad (.only Monad do)]
     [\\specification
@@ -17,7 +16,9 @@
    [math
     ["[0]" random]
     [number
-     ["n" nat]]]]]
+     ["n" nat]]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" / (.only)
    [//
@@ -52,11 +53,11 @@
 
              (in (do async.monad
                    [actual (/.commit! (at /.monad in expected))]
-                   (_.coverage' [/.commit!]
+                   (unit.coverage [/.commit!]
                      (n.= expected actual))))
              (in (do async.monad
                    [actual (/.commit! (/.read (/.var expected)))]
-                   (_.coverage' [/.Var /.var /.read]
+                   (unit.coverage [/.Var /.var /.read]
                      (n.= expected actual))))
              (in (do async.monad
                    [actual (let [box (/.var dummy)]
@@ -68,7 +69,7 @@
                                            [_ (/.write expected box)
                                             actual (/.read box)]
                                            (in (n.= expected actual)))))]
-                   (_.coverage' [/.write]
+                   (unit.coverage [/.write]
                      (and (n.= expected actual)
                           verdict))))
              (in (do async.monad
@@ -76,7 +77,7 @@
                     output (/.commit! (do /.monad
                                         [_ (/.update (n.+ expected) box)]
                                         (/.read box)))]
-                   (_.coverage' [/.update]
+                   (unit.coverage [/.update]
                      (n.= (n.+ expected dummy)
                           output))))
              (in (do async.monad
@@ -87,7 +88,7 @@
                     _ (async.future (at sink close))
                     _ (/.commit! (/.update (n.* 3) box))
                     changes (frp.list follower)]
-                   (_.coverage' [/.changes]
+                   (unit.coverage [/.changes]
                      (at (list.equivalence n.equivalence) =
                          (list expected (n.* 2 expected))
                          changes))))
@@ -97,7 +98,7 @@
                             (list#each (function (_ _) (/.commit! (/.update ++ var))))
                             (monad.all !))
                       cummulative (/.commit! (/.read var))]
-                     (_.coverage' [/.STM]
+                     (unit.coverage [/.STM]
                        (n.= iterations_per_process
                             cummulative)))))
              ))))
diff --git a/stdlib/source/test/lux/control/concurrency/thread.lux b/stdlib/source/test/lux/control/concurrency/thread.lux
index da2a9ea37..83a626c4f 100644
--- a/stdlib/source/test/lux/control/concurrency/thread.lux
+++ b/stdlib/source/test/lux/control/concurrency/thread.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -14,7 +13,9 @@
    [world
     [time
      ["[0]" instant (.only Instant)]
-     ["[0]" duration]]]]]
+     ["[0]" duration]]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" / (.only)
    [//
@@ -41,7 +42,7 @@
                                             (atom.write! [execution_time expected] box))))
                     _ (async.delay (n.* 2 delay))
                     [execution_time actual] (async.future (atom.read! box))]
-                   (_.coverage' [/.schedule!]
+                   (unit.coverage [/.schedule!]
                      (let [expected_delay!
                            (i.>= (.int delay)
                                  (duration.millis (instant.span reference_time execution_time)))
diff --git a/stdlib/source/test/lux/control/security/capability.lux b/stdlib/source/test/lux/control/security/capability.lux
index ecc9d22ba..d02572381 100644
--- a/stdlib/source/test/lux/control/security/capability.lux
+++ b/stdlib/source/test/lux/control/security/capability.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -11,7 +10,9 @@
    [math
     ["[0]" random]
     [number
-     ["n" nat]]]]]
+     ["n" nat]]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" /]])
 
@@ -40,6 +41,6 @@
                     (in (let [capability (..can_io (function (_ _) (io.io expected)))]
                           (do async.monad
                             [actual (/.use (/.async capability) [])]
-                            (_.coverage' [/.async]
+                            (unit.coverage [/.async]
                               (n.= expected actual)))))
                     )))))
diff --git a/stdlib/source/test/lux/data/format/json.lux b/stdlib/source/test/lux/data/format/json.lux
index 3fffb74a1..b64a685a2 100644
--- a/stdlib/source/test/lux/data/format/json.lux
+++ b/stdlib/source/test/lux/data/format/json.lux
@@ -260,7 +260,7 @@
   Test
   (<| (_.covering \\polytypic._)
       (_.for [\\polytypic.codec]
-             (for @.old (_.property "PLACEHOLDER" true)
+             (for @.old (_.test "PLACEHOLDER" true)
                   ($codec.spec ..equivalence ..codec ..gen_record)))))
 
 (def .public random
diff --git a/stdlib/source/test/lux/data/text/regex.lux b/stdlib/source/test/lux/data/text/regex.lux
index 661222696..7485c1d05 100644
--- a/stdlib/source/test/lux/data/text/regex.lux
+++ b/stdlib/source/test/lux/data/text/regex.lux
@@ -72,7 +72,7 @@
 
 (def basics
   Test
-  (_.property "Can parse character literals."
+  (_.test "Can parse character literals."
     (and (should_pass (/.regex "a") "a")
          (should_fail (/.regex "a") ".")
          (should_pass (/.regex "\.") ".")
@@ -81,30 +81,30 @@
 (def system_character_classes
   Test
   (all _.and
-       (_.property "Can parse anything."
+       (_.test "Can parse anything."
          (should_pass (/.regex ".") "a"))
 
-       (_.property "Can parse digits."
+       (_.test "Can parse digits."
          (and (should_pass (/.regex "\d") "0")
               (should_fail (/.regex "\d") "m")))
 
-       (_.property "Can parse non digits."
+       (_.test "Can parse non digits."
          (and (should_pass (/.regex "\D") "m")
               (should_fail (/.regex "\D") "0")))
 
-       (_.property "Can parse white-space."
+       (_.test "Can parse white-space."
          (and (should_pass (/.regex "\s") " ")
               (should_fail (/.regex "\s") "m")))
 
-       (_.property "Can parse non white-space."
+       (_.test "Can parse non white-space."
          (and (should_pass (/.regex "\S") "m")
               (should_fail (/.regex "\S") " ")))
 
-       (_.property "Can parse word characters."
+       (_.test "Can parse word characters."
          (and (should_pass (/.regex "\w") "_")
               (should_fail (/.regex "\w") "^")))
 
-       (_.property "Can parse non word characters."
+       (_.test "Can parse non word characters."
          (and (should_pass (/.regex "\W") ".")
               (should_fail (/.regex "\W") "a")))
        ))
@@ -112,46 +112,46 @@
 (def special_system_character_classes
   Test
   (all _.and
-       (_.property "Lower-case."
+       (_.test "Lower-case."
          (and (should_pass (/.regex "\p{Lower}") "m")
               (should_fail (/.regex "\p{Lower}") "M")))
-       (_.property "Upper-case."
+       (_.test "Upper-case."
          (and (should_pass (/.regex "\p{Upper}") "M")
               (should_fail (/.regex "\p{Upper}") "m")))
-       (_.property "Alphabetic."
+       (_.test "Alphabetic."
          (and (should_pass (/.regex "\p{Alpha}") "M")
               (should_fail (/.regex "\p{Alpha}") "0")))
-       (_.property "Numeric digits."
+       (_.test "Numeric digits."
          (and (should_pass (/.regex "\p{Digit}") "1")
               (should_fail (/.regex "\p{Digit}") "n")))
-       (_.property "Alphanumeric."
+       (_.test "Alphanumeric."
          (and (should_pass (/.regex "\p{Alnum}") "1")
               (should_fail (/.regex "\p{Alnum}") ".")))
-       (_.property "Whitespace."
+       (_.test "Whitespace."
          (and (should_pass (/.regex "\p{Space}") " ")
               (should_fail (/.regex "\p{Space}") ".")))
-       (_.property "Hexadecimal."
+       (_.test "Hexadecimal."
          (and (should_pass (/.regex "\p{HexDigit}") "a")
               (should_fail (/.regex "\p{HexDigit}") ".")))
-       (_.property "Octal."
+       (_.test "Octal."
          (and (should_pass (/.regex "\p{OctDigit}") "6")
               (should_fail (/.regex "\p{OctDigit}") ".")))
-       (_.property "Blank."
+       (_.test "Blank."
          (and (should_pass (/.regex "\p{Blank}") text.tab)
               (should_fail (/.regex "\p{Blank}") ".")))
-       (_.property "ASCII."
+       (_.test "ASCII."
          (and (should_pass (/.regex "\p{ASCII}") text.tab)
               (should_fail (/.regex "\p{ASCII}") (text.of_char (hex "1234")))))
-       (_.property "Control characters."
+       (_.test "Control characters."
          (and (should_pass (/.regex "\p{Contrl}") (text.of_char (hex "12")))
               (should_fail (/.regex "\p{Contrl}") "a")))
-       (_.property "Punctuation."
+       (_.test "Punctuation."
          (and (should_pass (/.regex "\p{Punct}") "@")
               (should_fail (/.regex "\p{Punct}") "a")))
-       (_.property "Graph."
+       (_.test "Graph."
          (and (should_pass (/.regex "\p{Graph}") "@")
               (should_fail (/.regex "\p{Graph}") " ")))
-       (_.property "Print."
+       (_.test "Print."
          (and (should_pass (/.regex "\p{Print}") (text.of_char (hex "20")))
               (should_fail (/.regex "\p{Print}") (text.of_char (hex "1234")))))
        ))
@@ -159,30 +159,30 @@
 (def custom_character_classes
   Test
   (all _.and
-       (_.property "Can parse using custom character classes."
+       (_.test "Can parse using custom character classes."
          (and (should_pass (/.regex "[abc]") "a")
               (should_fail (/.regex "[abc]") "m")))
-       (_.property "Can parse using character ranges."
+       (_.test "Can parse using character ranges."
          (and (should_pass (/.regex "[a-z]") "a")
               (should_pass (/.regex "[a-z]") "m")
               (should_pass (/.regex "[a-z]") "z")))
-       (_.property "Can combine character ranges."
+       (_.test "Can combine character ranges."
          (and (should_pass (/.regex "[a-zA-Z]") "a")
               (should_pass (/.regex "[a-zA-Z]") "m")
               (should_pass (/.regex "[a-zA-Z]") "z")
               (should_pass (/.regex "[a-zA-Z]") "A")
               (should_pass (/.regex "[a-zA-Z]") "M")
               (should_pass (/.regex "[a-zA-Z]") "Z")))
-       (_.property "Can negate custom character classes."
+       (_.test "Can negate custom character classes."
          (and (should_fail (/.regex "[^abc]") "a")
               (should_pass (/.regex "[^abc]") "m")))
-       (_.property "Can negate character ranges.."
+       (_.test "Can negate character ranges.."
          (and (should_fail (/.regex "[^a-z]") "a")
               (should_pass (/.regex "[^a-z]") "0")))
-       (_.property "Can parse negate combinations of character ranges."
+       (_.test "Can parse negate combinations of character ranges."
          (and (should_fail (/.regex "[^a-zA-Z]") "a")
               (should_pass (/.regex "[^a-zA-Z]") "0")))
-       (_.property "Can make custom character classes more specific."
+       (_.test "Can make custom character classes more specific."
          (and (let [RE (/.regex "[a-z&&[def]]")]
                 (and (should_fail RE "a")
                      (should_pass RE "d")))
@@ -198,7 +198,7 @@
 (def references
   Test
   (let [number (/.regex "\d+")]
-    (_.property "Can build complex regexs by combining simpler ones."
+    (_.test "Can build complex regexs by combining simpler ones."
       (should_check ["809-345-6789" "809" "345" "6789"]
                     (/.regex "(\@<number>)-(\@<number>)-(\@<number>)")
                     "809-345-6789"))))
@@ -206,18 +206,18 @@
 (def fuzzy_quantifiers
   Test
   (all _.and
-       (_.property "Can sequentially combine patterns."
+       (_.test "Can sequentially combine patterns."
          (text_should_pass "aa" (/.regex "aa") "aa"))
 
-       (_.property "Can match patterns optionally."
+       (_.test "Can match patterns optionally."
          (and (text_should_pass "a" (/.regex "a?") "a")
               (text_should_pass "" (/.regex "a?") "")))
 
-       (_.property "Can match a pattern 0 or more times."
+       (_.test "Can match a pattern 0 or more times."
          (and (text_should_pass "aaa" (/.regex "a*") "aaa")
               (text_should_pass "" (/.regex "a*") "")))
 
-       (_.property "Can match a pattern 1 or more times."
+       (_.test "Can match a pattern 1 or more times."
          (and (text_should_pass "aaa" (/.regex "a+") "aaa")
               (text_should_pass "a" (/.regex "a+") "a")
               (should_fail (/.regex "a+") "")))
@@ -226,21 +226,21 @@
 (def crisp_quantifiers
   Test
   (all _.and
-       (_.property "Can match a pattern N times."
+       (_.test "Can match a pattern N times."
          (and (text_should_pass "aa" (/.regex "a{2}") "aa")
               (text_should_pass "a" (/.regex "a{1}") "a")
               (should_fail (/.regex "a{3}") "aa")))
 
-       (_.property "Can match a pattern at-least N times."
+       (_.test "Can match a pattern at-least N times."
          (and (text_should_pass "aa" (/.regex "a{1,}") "aa")
               (text_should_pass "aa" (/.regex "a{2,}") "aa")
               (should_fail (/.regex "a{3,}") "aa")))
 
-       (_.property "Can match a pattern at-most N times."
+       (_.test "Can match a pattern at-most N times."
          (and (text_should_pass "aa" (/.regex "a{,2}") "aa")
               (text_should_pass "aa" (/.regex "a{,3}") "aa")))
 
-       (_.property "Can match a pattern between N and M times."
+       (_.test "Can match a pattern between N and M times."
          (and (text_should_pass "a" (/.regex "a{1,2}") "a")
               (text_should_pass "aa" (/.regex "a{1,2}") "aa")))
        ))
@@ -248,7 +248,7 @@
 (def groups
   Test
   (all _.and
-       (_.property "Can extract groups of sub-matches specified in a pattern."
+       (_.test "Can extract groups of sub-matches specified in a pattern."
          (and (should_check ["abc" "b"] (/.regex "a(.)c") "abc")
               (should_check ["abbbbbc" "bbbbb"] (/.regex "a(b+)c") "abbbbbc")
               (should_check ["809-345-6789" "809" "345" "6789"] (/.regex "(\d{3})-(\d{3})-(\d{4})") "809-345-6789")
@@ -257,18 +257,18 @@
               (should_check ["809-809-6789" "809" "6789"] (/.regex "(?<code>\d{3})-\k<code>-(\d{4})") "809-809-6789")
               (should_check ["809-809-6789-6789" "809" "6789"] (/.regex "(?<code>\d{3})-\k<code>-(\d{4})-\0") "809-809-6789-6789")))
 
-       (_.property "Can specify groups within groups."
+       (_.test "Can specify groups within groups."
          (should_check ["809-345-6789" "809" ["345-6789" "345" "6789"]] (/.regex "(\d{3})-((\d{3})-(\d{4}))") "809-345-6789"))
        ))
 
 (def alternation
   Test
   (all _.and
-       (_.property "Can specify alternative patterns."
+       (_.test "Can specify alternative patterns."
          (and (should_check ["a" {0 #0 []}] (/.regex "a|b") "a")
               (should_check ["b" {0 #1 []}] (/.regex "a|b") "b")
               (should_fail (/.regex "a|b") "c")))
-       (_.property "Can have groups within alternations."
+       (_.test "Can have groups within alternations."
          (and (should_check ["abc" {0 #0 ["b" "c"]}] (/.regex "a(.)(.)|b(.)(.)") "abc")
               (should_check ["bcd" {0 #1 ["c" "d"]}] (/.regex "a(.)(.)|b(.)(.)") "bcd")
               (should_fail (/.regex "a(.)(.)|b(.)(.)") "cde")
diff --git a/stdlib/source/test/lux/ffi.php.lux b/stdlib/source/test/lux/ffi.php.lux
index b047e35fa..324bd7b81 100644
--- a/stdlib/source/test/lux/ffi.php.lux
+++ b/stdlib/source/test/lux/ffi.php.lux
@@ -21,5 +21,5 @@
   (do [! random.monad]
     []
     (<| (_.covering /._)
-        (_.property "TBD"
+        (_.test "TBD"
           true))))
diff --git a/stdlib/source/test/lux/ffi.scm.lux b/stdlib/source/test/lux/ffi.scm.lux
index b047e35fa..324bd7b81 100644
--- a/stdlib/source/test/lux/ffi.scm.lux
+++ b/stdlib/source/test/lux/ffi.scm.lux
@@ -21,5 +21,5 @@
   (do [! random.monad]
     []
     (<| (_.covering /._)
-        (_.property "TBD"
+        (_.test "TBD"
           true))))
diff --git a/stdlib/source/test/lux/meta/compiler/language/lux/phase/extension/analysis/lux.lux b/stdlib/source/test/lux/meta/compiler/language/lux/phase/extension/analysis/lux.lux
index ac89471ba..5de7ad7d3 100644
--- a/stdlib/source/test/lux/meta/compiler/language/lux/phase/extension/analysis/lux.lux
+++ b/stdlib/source/test/lux/meta/compiler/language/lux/phase/extension/analysis/lux.lux
@@ -61,11 +61,11 @@
      [antiT antiC] (|> ..primitive
                        (r.only (|>> product.left (type#= primT) not)))]
     (all _.and
-         (_.property "Can test for reference equality."
+         (_.test "Can test for reference equality."
            (check_success+ "lux is" (list primC primC) Bit))
-         (_.property "Reference equality must be done with elements of the same type."
+         (_.test "Reference equality must be done with elements of the same type."
            (check_failure+ "lux is" (list primC antiC) Bit))
-         (_.property "Can 'try' risky IO computations."
+         (_.test "Can 'try' risky IO computations."
            (check_success+ "lux try"
                            (list (` ("lux io error" "YOLO")))
                            (type_literal (Either Text primT))))
@@ -78,23 +78,23 @@
      signedC (|> r.int (at ! each code.int))
      paramC (|> r.nat (at ! each code.nat))]
     (all _.and
-         (_.property "i64 'and'."
+         (_.test "i64 'and'."
            (check_success+ "lux i64 and" (list paramC subjectC) Nat))
-         (_.property "i64 'or'."
+         (_.test "i64 'or'."
            (check_success+ "lux i64 or" (list paramC subjectC) Nat))
-         (_.property "i64 'xor'."
+         (_.test "i64 'xor'."
            (check_success+ "lux i64 xor" (list paramC subjectC) Nat))
-         (_.property "i64 left-shift."
+         (_.test "i64 left-shift."
            (check_success+ "lux i64 left-shift" (list paramC subjectC) Nat))
-         (_.property "i64 logical-right-shift."
+         (_.test "i64 logical-right-shift."
            (check_success+ "lux i64 logical-right-shift" (list paramC subjectC) Nat))
-         (_.property "i64 arithmetic-right-shift."
+         (_.test "i64 arithmetic-right-shift."
            (check_success+ "lux i64 arithmetic-right-shift" (list paramC signedC) Int))
-         (_.property "i64 equivalence."
+         (_.test "i64 equivalence."
            (check_success+ "lux i64 =" (list paramC subjectC) Bit))
-         (_.property "i64 addition."
+         (_.test "i64 addition."
            (check_success+ "lux i64 +" (list paramC subjectC) Int))
-         (_.property "i64 subtraction."
+         (_.test "i64 subtraction."
            (check_success+ "lux i64 -" (list paramC subjectC) Int))
          )))
 
@@ -104,17 +104,17 @@
     [subjectC (|> r.int (at ! each code.int))
      paramC (|> r.int (at ! each code.int))]
     (all _.and
-         (_.property "Can multiply integers."
+         (_.test "Can multiply integers."
            (check_success+ "lux i64 *" (list paramC subjectC) Int))
-         (_.property "Can divide integers."
+         (_.test "Can divide integers."
            (check_success+ "lux i64 /" (list paramC subjectC) Int))
-         (_.property "Can calculate remainder of integers."
+         (_.test "Can calculate remainder of integers."
            (check_success+ "lux i64 %" (list paramC subjectC) Int))
-         (_.property "Can compare integers."
+         (_.test "Can compare integers."
            (check_success+ "lux i64 <" (list paramC subjectC) Bit))
-         (_.property "Can convert integer to text."
+         (_.test "Can convert integer to text."
            (check_success+ "lux i64 char" (list subjectC) Text))
-         (_.property "Can convert integer to fraction."
+         (_.test "Can convert integer to fraction."
            (check_success+ "lux i64 f64" (list subjectC) Frac))
          )))
 
@@ -125,31 +125,31 @@
      paramC (|> r.safe_frac (at ! each code.frac))
      encodedC (|> r.safe_frac (at ! each (|>> %.frac code.text)))]
     (all _.and
-         (_.property "Can add frac numbers."
+         (_.test "Can add frac numbers."
            (check_success+ "lux f64 +" (list paramC subjectC) Frac))
-         (_.property "Can subtract frac numbers."
+         (_.test "Can subtract frac numbers."
            (check_success+ "lux f64 -" (list paramC subjectC) Frac))
-         (_.property "Can multiply frac numbers."
+         (_.test "Can multiply frac numbers."
            (check_success+ "lux f64 *" (list paramC subjectC) Frac))
-         (_.property "Can divide frac numbers."
+         (_.test "Can divide frac numbers."
            (check_success+ "lux f64 /" (list paramC subjectC) Frac))
-         (_.property "Can calculate remainder of frac numbers."
+         (_.test "Can calculate remainder of frac numbers."
            (check_success+ "lux f64 %" (list paramC subjectC) Frac))
-         (_.property "Can test equivalence of frac numbers."
+         (_.test "Can test equivalence of frac numbers."
            (check_success+ "lux f64 =" (list paramC subjectC) Bit))
-         (_.property "Can compare frac numbers."
+         (_.test "Can compare frac numbers."
            (check_success+ "lux f64 <" (list paramC subjectC) Bit))
-         (_.property "Can obtain minimum frac number."
+         (_.test "Can obtain minimum frac number."
            (check_success+ "lux f64 min" (list) Frac))
-         (_.property "Can obtain maximum frac number."
+         (_.test "Can obtain maximum frac number."
            (check_success+ "lux f64 max" (list) Frac))
-         (_.property "Can obtain smallest frac number."
+         (_.test "Can obtain smallest frac number."
            (check_success+ "lux f64 smallest" (list) Frac))
-         (_.property "Can convert frac number to integer."
+         (_.test "Can convert frac number to integer."
            (check_success+ "lux f64 i64" (list subjectC) Int))
-         (_.property "Can convert frac number to text."
+         (_.test "Can convert frac number to text."
            (check_success+ "lux f64 encode" (list subjectC) Text))
-         (_.property "Can convert text to frac number."
+         (_.test "Can convert text to frac number."
            (check_success+ "lux f64 decode" (list encodedC) (type_literal (Maybe Frac))))
          )))
 
@@ -162,19 +162,19 @@
      fromC (|> r.nat (at ! each code.nat))
      toC (|> r.nat (at ! each code.nat))]
     (all _.and
-         (_.property "Can test text equivalence."
+         (_.test "Can test text equivalence."
            (check_success+ "lux text =" (list paramC subjectC) Bit))
-         (_.property "Compare texts in lexicographical order."
+         (_.test "Compare texts in lexicographical order."
            (check_success+ "lux text <" (list paramC subjectC) Bit))
-         (_.property "Can concatenate one text to another."
+         (_.test "Can concatenate one text to another."
            (check_success+ "lux text concat" (list subjectC paramC) Text))
-         (_.property "Can find the index of a piece of text inside a larger one that (may) contain it."
+         (_.test "Can find the index of a piece of text inside a larger one that (may) contain it."
            (check_success+ "lux text index" (list fromC paramC subjectC) (type_literal (Maybe Nat))))
-         (_.property "Can query the size/length of a text."
+         (_.test "Can query the size/length of a text."
            (check_success+ "lux text size" (list subjectC) Nat))
-         (_.property "Can obtain the character code of a text at a given index."
+         (_.test "Can obtain the character code of a text at a given index."
            (check_success+ "lux text char" (list fromC subjectC) Nat))
-         (_.property "Can clip a piece of text between 2 indices."
+         (_.test "Can clip a piece of text between 2 indices."
            (check_success+ "lux text clip" (list fromC toC subjectC) Text))
          )))
 
@@ -184,9 +184,9 @@
     [logC (|> (r.unicode 5) (at ! each code.text))
      exitC (|> r.int (at ! each code.int))]
     (all _.and
-         (_.property "Can log messages to standard output."
+         (_.test "Can log messages to standard output."
            (check_success+ "lux io log" (list logC) Any))
-         (_.property "Can throw a run-time error."
+         (_.test "Can throw a run-time error."
            (check_success+ "lux io error" (list logC) Nothing))
          )))
 
diff --git a/stdlib/source/test/lux/meta/compiler/language/lux/phase/synthesis/primitive.lux b/stdlib/source/test/lux/meta/compiler/language/lux/phase/synthesis/primitive.lux
index 07414ac90..62d7d5db2 100644
--- a/stdlib/source/test/lux/meta/compiler/language/lux/phase/synthesis/primitive.lux
+++ b/stdlib/source/test/lux/meta/compiler/language/lux/phase/synthesis/primitive.lux
@@ -78,7 +78,7 @@
                (,, (with_template [<analysis> <synthesis> <generator>]
                      [(do r.monad
                         [expected <generator>]
-                        (_.property (%.symbol (symbol <synthesis>))
+                        (_.test (%.symbol (symbol <synthesis>))
                           (|> {////analysis.#Primitive {<analysis> expected}}
                               (//.phase archive.empty)
                               (phase.result [///bundle.empty ////synthesis.init])
diff --git a/stdlib/source/test/lux/meta/compiler/language/lux/phase/synthesis/structure.lux b/stdlib/source/test/lux/meta/compiler/language/lux/phase/synthesis/structure.lux
index d17044f40..8da9fae17 100644
--- a/stdlib/source/test/lux/meta/compiler/language/lux/phase/synthesis/structure.lux
+++ b/stdlib/source/test/lux/meta/compiler/language/lux/phase/synthesis/structure.lux
@@ -44,7 +44,7 @@
                    (-- tagA)
                    tagA)]
      memberA //primitive.primitive]
-    (_.property "Can synthesize variants."
+    (_.test "Can synthesize variants."
       (|> (////analysis.variant [lefts right? memberA])
           (//.phase archive.empty)
           (phase.result [///bundle.empty ////synthesis.init])
@@ -63,7 +63,7 @@
   (do [! r.monad]
     [size (|> r.nat (at ! each (|>> (n.% 10) (n.max 2))))
      membersA (r.list size //primitive.primitive)]
-    (_.property "Can synthesize tuple."
+    (_.test "Can synthesize tuple."
       (|> (////analysis.tuple membersA)
           (//.phase archive.empty)
           (phase.result [///bundle.empty ////synthesis.init])
diff --git a/stdlib/source/test/lux/meta/compiler/language/lux/syntax.lux b/stdlib/source/test/lux/meta/compiler/language/lux/syntax.lux
index a87bcbd66..fa6f6fade 100644
--- a/stdlib/source/test/lux/meta/compiler/language/lux/syntax.lux
+++ b/stdlib/source/test/lux/meta/compiler/language/lux/syntax.lux
@@ -75,7 +75,7 @@
   (do [! r.monad]
     [sample code^]
     (all _.and
-         (_.property "Can parse Lux code."
+         (_.test "Can parse Lux code."
            (case (let [source_code (%.code sample)]
                    (/.parse "" (dictionary.empty text.hash) (text.size source_code)
                             [location.dummy 0 source_code]))
@@ -86,7 +86,7 @@
              (at code.equivalence = parsed sample)))
          (do !
            [other code^]
-           (_.property "Can parse multiple Lux code nodes."
+           (_.test "Can parse multiple Lux code nodes."
              (let [source_code (format (%.code sample) " " (%.code other))
                    source_code//size (text.size source_code)]
                (case (/.parse "" (dictionary.empty text.hash) source_code//size
@@ -124,7 +124,7 @@
     [sample code^
      comment comment^]
     (all _.and
-         (_.property "Can handle comments."
+         (_.test "Can handle comments."
            (case (let [source_code (format comment (%.code sample))
                        source_code//size (text.size source_code)]
                    (/.parse "" (dictionary.empty text.hash) source_code//size
diff --git a/stdlib/source/test/lux/meta/compiler/meta/cache.lux b/stdlib/source/test/lux/meta/compiler/meta/cache.lux
index 68ba4e7fb..e52d9f4c2 100644
--- a/stdlib/source/test/lux/meta/compiler/meta/cache.lux
+++ b/stdlib/source/test/lux/meta/compiler/meta/cache.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -11,7 +10,9 @@
    [math
     ["[0]" random]]
    [world
-    ["[0]" file]]]]
+    ["[0]" file]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" /]]
  ["[0]" /
@@ -36,7 +37,7 @@
                     outcome (/.enable! ! fs context)
                     post/0 (at fs directory? (/.path fs context))
                     post/1 (/.enabled? fs context)]
-                   (_.coverage' [/.path /.enabled? /.enable!]
+                   (unit.coverage [/.path /.enabled? /.enable!]
                      (and (not pre/0)
                           (not pre/1)
                           
diff --git a/stdlib/source/test/lux/meta/compiler/meta/cache/archive.lux b/stdlib/source/test/lux/meta/compiler/meta/cache/archive.lux
index 09821245e..09263a7d3 100644
--- a/stdlib/source/test/lux/meta/compiler/meta/cache/archive.lux
+++ b/stdlib/source/test/lux/meta/compiler/meta/cache/archive.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -17,7 +16,9 @@
     [number
      ["n" nat]]]
    [world
-    ["[0]" file]]]]
+    ["[0]" file]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" / (.only)
    ["/[1]" // (.only)
@@ -72,7 +73,7 @@
                     cached? (/.cache! fs context archive)
                     actual (at fs read (/.descriptor fs context))
                     post/0 (at fs file? (/.descriptor fs context))]
-                   (_.coverage' [/.descriptor /.cache!]
+                   (unit.coverage [/.descriptor /.cache!]
                      (and (not pre/0)
                           (|> (do try.monad
                                 [_ enabled?
diff --git a/stdlib/source/test/lux/meta/compiler/meta/cache/artifact.lux b/stdlib/source/test/lux/meta/compiler/meta/cache/artifact.lux
index 7d3fa626d..aff81fd7e 100644
--- a/stdlib/source/test/lux/meta/compiler/meta/cache/artifact.lux
+++ b/stdlib/source/test/lux/meta/compiler/meta/cache/artifact.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -16,7 +15,9 @@
     [number
      ["n" nat]]]
    [world
-    ["[0]" file]]]]
+    ["[0]" file]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" / (.only)
    ["/[1]" //
@@ -41,7 +42,7 @@
                     write! (/.cache! fs context @module @artifact expected)
                     post (at fs file? (/.path fs context @module @artifact))
                     read! (/.cache fs context @module @artifact)]
-                   (_.coverage' [/.path /.cache! /.cache]
+                   (unit.coverage [/.path /.cache! /.cache]
                      (and (not pre)
                           (case write!
                             {try.#Success _} true
diff --git a/stdlib/source/test/lux/meta/compiler/meta/cache/module.lux b/stdlib/source/test/lux/meta/compiler/meta/cache/module.lux
index bce9082e5..bf12dcc3a 100644
--- a/stdlib/source/test/lux/meta/compiler/meta/cache/module.lux
+++ b/stdlib/source/test/lux/meta/compiler/meta/cache/module.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -12,7 +11,9 @@
    [math
     ["[0]" random]]
    [world
-    ["[0]" file]]]]
+    ["[0]" file]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" /]]
  ["$[0]" ///
@@ -60,7 +61,7 @@
                     outcome (/.enable! ! fs context @module)
                     post/0 (at fs directory? (/.path fs context @module))
                     post/1 (/.enabled? fs context @module)]
-                   (_.coverage' [/.path /.enabled? /.enable!]
+                   (unit.coverage [/.path /.enabled? /.enable!]
                      (and (not pre/0)
                           (not pre/1)
                           
@@ -78,7 +79,7 @@
                     outcome (/.enable! ! (..bad fs) context @module)
                     post/0 (at fs directory? (/.path fs context @module))
                     post/1 (/.enabled? fs context @module)]
-                   (_.coverage' [/.cannot_enable]
+                   (unit.coverage [/.cannot_enable]
                      (and (not pre/0)
                           (not pre/1)
                           
diff --git a/stdlib/source/test/lux/meta/compiler/meta/cache/purge.lux b/stdlib/source/test/lux/meta/compiler/meta/cache/purge.lux
index c5bc1dfb5..cf0b520f2 100644
--- a/stdlib/source/test/lux/meta/compiler/meta/cache/purge.lux
+++ b/stdlib/source/test/lux/meta/compiler/meta/cache/purge.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -23,7 +22,9 @@
     [number
      ["n" nat]]]
    [world
-    ["[0]" file]]]]
+    ["[0]" file]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" / (.only)
    ["/[1]" //
@@ -124,7 +125,7 @@
                                 pre (at fs directory_files dir)
                                 _ (/.purge! fs context id/0)
                                 post (at fs directory_files dir)]
-                               (_.coverage' [/.purge!]
+                               (unit.coverage [/.purge!]
                                  (<| (try.else false)
                                      (do try.monad
                                        [pre pre]
diff --git a/stdlib/source/test/lux/meta/compiler/meta/export.lux b/stdlib/source/test/lux/meta/compiler/meta/export.lux
index d9fb14ace..e1dd299b0 100644
--- a/stdlib/source/test/lux/meta/compiler/meta/export.lux
+++ b/stdlib/source/test/lux/meta/compiler/meta/export.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -27,7 +26,9 @@
     [number
      ["n" nat]]]
    [world
-    ["[0]" file]]]]
+    ["[0]" file]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" / (.only)
    [//
@@ -73,8 +74,8 @@
                           export_tar (at fs read (format target / /.file))
                           export_tar (at ! in (<binary>.result tar.parser export_tar))]
                          (in [library_tar export_tar]))]
-                   (all _.and'
-                        (_.coverage' [/.library /.mode /.ownership]
+                   (all unit.and
+                        (unit.coverage [/.library /.mode /.ownership]
                           (|> it
                               (try#each (|>> product.left
                                              sequence.list
@@ -97,7 +98,7 @@
                                                _
                                                false)))
                               (try.else false)))
-                        (_.coverage' [/.export /.file]
+                        (unit.coverage [/.export /.file]
                           (|> it
                               (try#each (|>> product.right
                                              sequence.list
diff --git a/stdlib/source/test/lux/meta/compiler/meta/import.lux b/stdlib/source/test/lux/meta/compiler/meta/import.lux
index fc2e79616..30ba445cd 100644
--- a/stdlib/source/test/lux/meta/compiler/meta/import.lux
+++ b/stdlib/source/test/lux/meta/compiler/meta/import.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -30,7 +29,9 @@
     [number
      ["n" nat]]]
    [world
-    ["[0]" file]]]]
+    ["[0]" file]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" / (.only)
    [//
@@ -118,7 +119,7 @@
                             _ (at fs write library/0 library_content/0)
                             _ (at fs write library/1 library_content/1)]
                            (/.import fs (list library/0 library/1)))]
-                   (_.coverage' [/.import]
+                   (unit.coverage [/.import]
                      (and (|> it/0
                               (try#each imported?)
                               (try.else false))
@@ -131,7 +132,7 @@
                           _ (at fs write library/0 library_content)
                           _ (/.import fs (list library/0 library/0))]
                          (in false))]
-                   (_.coverage' [/.duplicate]
+                   (unit.coverage [/.duplicate]
                      (exception.otherwise (exception.match? /.duplicate) it))))
              (in (do [! async.monad]
                    [it/0 (do (try.with !)
@@ -149,7 +150,7 @@
                             _ (at fs write library/0 library_content/-2)
                             _ (/.import fs (list library/0))]
                            (in false))]
-                   (_.coverage' [/.useless_tar_entry]
+                   (unit.coverage [/.useless_tar_entry]
                      (and (exception.otherwise (exception.match? /.useless_tar_entry) it/0)
                           (exception.otherwise (exception.match? /.useless_tar_entry) it/1)
                           (exception.otherwise (exception.match? /.useless_tar_entry) it/2)))))
diff --git a/stdlib/source/test/lux/meta/macro/context.lux b/stdlib/source/test/lux/meta/macro/context.lux
index 52df97710..865d6abe8 100644
--- a/stdlib/source/test/lux/meta/macro/context.lux
+++ b/stdlib/source/test/lux/meta/macro/context.lux
@@ -8,5 +8,5 @@
 (def .public test
   Test
   (<| (_.covering /._)
-      (_.property "TBD" false)
+      (_.test "TBD" false)
       ))
diff --git a/stdlib/source/test/lux/meta/static.lux b/stdlib/source/test/lux/meta/static.lux
index aa67ab7a2..0a0d784a9 100644
--- a/stdlib/source/test/lux/meta/static.lux
+++ b/stdlib/source/test/lux/meta/static.lux
@@ -23,7 +23,7 @@
 (def .public test
   Test
   (<| (_.covering /._)
-      (for @.old (_.property "PLACEHOLDER" true))
+      (for @.old (_.test "PLACEHOLDER" true))
       (_.for [meta.eval])
       (`` (all _.and
                (,, (with_template [<static> <random> <=> <+> <tag>]
diff --git a/stdlib/source/test/lux/meta/symbol.lux b/stdlib/source/test/lux/meta/symbol.lux
index 6972cd346..1c54441cc 100644
--- a/stdlib/source/test/lux/meta/symbol.lux
+++ b/stdlib/source/test/lux/meta/symbol.lux
@@ -50,7 +50,7 @@
                            ($order.spec /.order (..random sizeM1 sizeS1)))
                     (_.for [/.codec]
                            (_.and ($codec.spec /.equivalence /.codec (..random sizeM1 sizeS1))
-                                  (_.property "Encoding a symbol without a module component results in text equal to the short of the symbol."
+                                  (_.test "Encoding a symbol without a module component results in text equal to the short of the symbol."
                                     (if (text.empty? module1)
                                       (same? short1 (at /.codec encoded symbol1))
                                       true))))
@@ -66,7 +66,7 @@
                     (_.for [.symbol]
                            (let [(open "/#[0]") /.equivalence]
                              (all _.and
-                                  (_.property "Can obtain Symbol from a symbol."
+                                  (_.test "Can obtain Symbol from a symbol."
                                     (and (/#= [.prelude "yolo"] (.symbol .yolo))
                                          (/#= ["test/lux/meta/symbol" "yolo"] (.symbol ..yolo))
                                          (/#= ["" "yolo"] (.symbol yolo))
diff --git a/stdlib/source/test/lux/meta/target/jvm.lux b/stdlib/source/test/lux/meta/target/jvm.lux
index 28fff6e38..b3758f810 100644
--- a/stdlib/source/test/lux/meta/target/jvm.lux
+++ b/stdlib/source/test/lux/meta/target/jvm.lux
@@ -912,7 +912,7 @@
                         try.trusted
                         (binary.result /class.format))
            loader (/loader.memory (/loader.new_library []))]]
-    (_.property "PUTSTATIC & PUTFIELD & GETFIELD & GETSTATIC"
+    (_.test "PUTSTATIC & PUTFIELD & GETFIELD & GETSTATIC"
       (case (do try.monad
               [_ (/loader.define class_name bytecode loader)
                class (io.run! (/loader.load class_name loader))
@@ -1732,7 +1732,7 @@
                                  try.trusted
                                  (binary.result /class.format))
            loader (/loader.memory (/loader.new_library []))]]
-    (_.property "Class & interface inheritance"
+    (_.test "Class & interface inheritance"
       (case (do try.monad
               [_ (/loader.define abstract_class abstract_bytecode loader)
                _ (/loader.define interface_class interface_bytecode loader)
diff --git a/stdlib/source/test/lux/meta/type/resource.lux b/stdlib/source/test/lux/meta/type/resource.lux
index 65618e66a..0935d0c2e 100644
--- a/stdlib/source/test/lux/meta/type/resource.lux
+++ b/stdlib/source/test/lux/meta/type/resource.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     ["[0]" monad (.only)
      [indexed (.only do)]]]
@@ -22,7 +21,9 @@
      ["<[1]>" \\parser]]
     [macro
      [syntax (.only syntax)]
-     ["[0]" expansion]]]]]
+     ["[0]" expansion]]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" / (.only Res)]])
 
@@ -126,7 +127,7 @@
                                               (do (/.monad !)
                                                 <bindings>
                                                 (in (format left right))))]
-                                 (_.coverage' <coverage>
+                                 (unit.coverage <coverage>
                                    (text#= (format pre post)
                                            outcome))))]
 
diff --git a/stdlib/source/test/lux/test.lux b/stdlib/source/test/lux/test.lux
index 3e47848dc..956969668 100644
--- a/stdlib/source/test/lux/test.lux
+++ b/stdlib/source/test/lux/test.lux
@@ -20,16 +20,17 @@
     [number
      ["n" nat]]]]]
  [\\library
-  ["[0]" /]])
+  ["[0]" / (.only)
+   ["[0]" unit]]])
 
 (def (verify expected_message/0 expected_message/1 successes failures [tally message])
-  (-> Text Text Nat Nat [/.Tally Text] Bit)
+  (-> Text Text Nat Nat [unit.Tally Text] Bit)
   (and (text.contains? expected_message/0 message)
        (text.contains? expected_message/1 message)
-       (n.= successes (the /.#successes tally))
-       (n.= failures (the /.#failures tally))))
+       (n.= successes (the unit.#successes tally))
+       (n.= failures (the unit.#failures tally))))
 
-(def assertion
+(def unit_test
   /.Test
   (do [! random.monad]
     [expected_message/0 (random.lower_case 5)
@@ -37,25 +38,25 @@
                                      (random.lower_case 5))]
     (all /.and
          (in (do async.monad
-               [[success_tally success_message] (/.assertion expected_message/0 true)
-                [failure_tally failure_message] (/.assertion expected_message/0 false)]
-               (/.coverage' [/.assertion /.Tally]
+               [[success_tally success_message] (unit.test expected_message/0 true)
+                [failure_tally failure_message] (unit.test expected_message/0 false)]
+               (unit.coverage [unit.test unit.Tally]
                  (and (text.ends_with? expected_message/0 success_message)
                       (text.ends_with? expected_message/0 failure_message)
-                      (and (n.= 1 (the /.#successes success_tally))
-                           (n.= 0 (the /.#failures success_tally)))
-                      (and (n.= 0 (the /.#successes failure_tally))
-                           (n.= 1 (the /.#failures failure_tally)))))))
+                      (and (n.= 1 (the unit.#successes success_tally))
+                           (n.= 0 (the unit.#failures success_tally)))
+                      (and (n.= 0 (the unit.#successes failure_tally))
+                           (n.= 1 (the unit.#failures failure_tally)))))))
          (in (do async.monad
-               [tt (/.and' (/.assertion expected_message/0 true)
-                           (/.assertion expected_message/1 true))
-                ff (/.and' (/.assertion expected_message/0 false)
-                           (/.assertion expected_message/1 false))
-                tf (/.and' (/.assertion expected_message/0 true)
-                           (/.assertion expected_message/1 false))
-                ft (/.and' (/.assertion expected_message/0 false)
-                           (/.assertion expected_message/1 true))]
-               (/.coverage' [/.and']
+               [tt (unit.and (unit.test expected_message/0 true)
+                             (unit.test expected_message/1 true))
+                ff (unit.and (unit.test expected_message/0 false)
+                             (unit.test expected_message/1 false))
+                tf (unit.and (unit.test expected_message/0 true)
+                             (unit.test expected_message/1 false))
+                ft (unit.and (unit.test expected_message/0 false)
+                             (unit.test expected_message/1 true))]
+               (unit.coverage [unit.and]
                  (and (..verify expected_message/0 expected_message/1 2 0 tt)
                       (..verify expected_message/0 expected_message/1 0 2 ff)
                       (..verify expected_message/0 expected_message/1 1 1 tf)
@@ -72,49 +73,49 @@
              (do !
                [sample random.nat
                 .let [wrote? (io.run! (write sample))]]
-               (/.property "" wrote?)))
+               (/.test "" wrote?)))
      post (<| (/.seed seed)
               (do !
                 [actual random.nat]
                 (in (do async.monad
                       [expected read]
-                      (/.assertion "" (n.= expected actual))))))]
+                      (unit.test "" (n.= expected actual))))))]
     (in (do async.monad
           [[pre_tally pre_message] pre
            [post_tally post_message] post]
-          (/.coverage' [/.seed]
-            (and (and (n.= 1 (the /.#successes pre_tally))
-                      (n.= 0 (the /.#failures pre_tally)))
-                 (and (n.= 1 (the /.#successes post_tally))
-                      (n.= 0 (the /.#failures post_tally)))))))))
+          (unit.coverage [/.seed]
+            (and (and (n.= 1 (the unit.#successes pre_tally))
+                      (n.= 0 (the unit.#failures pre_tally)))
+                 (and (n.= 1 (the unit.#successes post_tally))
+                      (n.= 0 (the unit.#failures post_tally)))))))))
 
 (def times
   /.Test
   (all /.and
        (do [! random.monad]
-         [times_assertion (/.times 0 (/.property "" true))]
+         [times_unit_test (/.times 0 (/.test "" true))]
          (in (do async.monad
-               [[tally error] times_assertion]
-               (/.coverage' [/.must_try_test_at_least_once]
+               [[tally error] times_unit_test]
+               (unit.coverage [/.must_try_test_at_least_once]
                  (and (text.contains? (the exception.#label /.must_try_test_at_least_once) error)
-                      (n.= 0 (the /.#successes tally))
-                      (n.= 1 (the /.#failures tally)))))))
+                      (n.= 0 (the unit.#successes tally))
+                      (n.= 1 (the unit.#failures tally)))))))
        (do [! random.monad]
          [expected (at ! each (|>> (n.% 10) ++) random.nat)
           .let [counter (is (Atom Nat)
                             (atom.atom 0))]
-          times_assertion (<| (/.times expected)
+          times_unit_test (<| (/.times expected)
                               (do !
                                 [_ (in [])
                                  .let [_ (io.run! (atom.update! ++ counter))]]
-                                (/.property "" true)))]
+                                (/.test "" true)))]
          (in (do async.monad
-               [[tally error] times_assertion
+               [[tally error] times_unit_test
                 actual (async.future (atom.read! counter))]
-               (/.coverage' [/.times]
+               (unit.coverage [/.times]
                  (and (n.= expected actual)
-                      (n.= 1 (the /.#successes tally))
-                      (n.= 0 (the /.#failures tally)))))))
+                      (n.= 1 (the unit.#successes tally))
+                      (n.= 0 (the unit.#failures tally)))))))
        ))
 
 (def in_parallel
@@ -124,40 +125,40 @@
          [expected (at ! each (|>> (n.% 10) ++) random.nat)
           .let [counter (is (Atom Nat)
                             (atom.atom 0))]
-          assertion (<| /.in_parallel
+          unit_test (<| /.in_parallel
                         (list.repeated expected)
                         (is /.Test)
                         (do !
                           [_ (in [])
                            .let [_ (io.run! (atom.update! ++ counter))]]
-                          (/.property "" true)))]
+                          (/.test "" true)))]
          (in (do async.monad
-               [[tally error] assertion
+               [[tally error] unit_test
                 actual (async.future (atom.read! counter))]
-               (/.coverage' [/.in_parallel]
+               (unit.coverage [/.in_parallel]
                  (and (n.= expected actual)
-                      (n.= expected (the /.#successes tally))
-                      (n.= 0 (the /.#failures tally)))))))
+                      (n.= expected (the unit.#successes tally))
+                      (n.= 0 (the unit.#failures tally)))))))
        (do [! random.monad]
          [expected (at ! each (|>> (n.% 10) ++) random.nat)
           .let [counter (is (Atom Nat)
                             (atom.atom 0))]
-          assertion (<| /.in_parallel
+          unit_test (<| /.in_parallel
                         (list.repeated expected)
                         (is /.Test)
                         (do !
                           [_ (in [])
                            .let [_ (undefined)
                                  _ (io.run! (atom.update! ++ counter))]]
-                          (/.property "" true)))]
+                          (/.test "" true)))]
          (in (do async.monad
-               [[tally error] assertion
+               [[tally error] unit_test
                 actual (async.future (atom.read! counter))]
-               (/.coverage' [/.error_during_execution]
+               (unit.coverage [/.error_during_execution]
                  (let [correct_error! (text.contains? (the exception.#label /.error_during_execution) error)
                        no_complete_run! (n.= 0 actual)
-                       no_successes! (n.= 0 (the /.#successes tally))
-                       ran_all_tests! (n.= expected (the /.#failures tally))]
+                       no_successes! (n.= 0 (the unit.#successes tally))
+                       ran_all_tests! (n.= expected (the unit.#failures tally))]
                    (and correct_error!
                         no_complete_run!
                         no_successes!
@@ -171,49 +172,49 @@
   /.Test
   (all /.and
        (do random.monad
-         [not_covering (/.property "" true)
-          covering (/.covering .._ (/.property "" true))]
+         [not_covering (/.test "" true)
+          covering (/.covering .._ (/.test "" true))]
          (in (do async.monad
                [[not_covering _] not_covering
                 [covering _] covering]
-               (/.coverage' [/.covering]
-                 (and (and (set.empty? (the /.#expected not_covering))
-                           (set.empty? (the /.#actual not_covering)))
-                      (and (not (set.empty? (the /.#expected covering)))
-                           (set.empty? (the /.#actual covering))))))))
+               (unit.coverage [/.covering]
+                 (and (and (set.empty? (the unit.#expected not_covering))
+                           (set.empty? (the unit.#actual not_covering)))
+                      (and (not (set.empty? (the unit.#expected covering)))
+                           (set.empty? (the unit.#actual covering))))))))
        (do random.monad
-         [not_covering (/.covering .._ (/.property "" true))
+         [not_covering (/.covering .._ (/.test "" true))
           covering (/.covering .._ (/.coverage [..dummy_target] true))]
          (in (do async.monad
                [[not_covering _] not_covering
                 [covering _] covering]
-               (/.coverage' [/.coverage]
-                 (and (and (not (set.empty? (the /.#expected not_covering)))
-                           (not (set.member? (the /.#actual not_covering) (symbol ..dummy_target))))
-                      (and (not (set.empty? (the /.#expected covering)))
-                           (set.member? (the /.#actual covering) (symbol ..dummy_target))))))))
+               (unit.coverage [/.coverage]
+                 (and (and (not (set.empty? (the unit.#expected not_covering)))
+                           (not (set.member? (the unit.#actual not_covering) (symbol ..dummy_target))))
+                      (and (not (set.empty? (the unit.#expected covering)))
+                           (set.member? (the unit.#actual covering) (symbol ..dummy_target))))))))
        (do random.monad
-         [not_covering (/.covering .._ (/.property "" true))
-          covering (/.covering .._ (in (/.coverage' [..dummy_target] true)))]
+         [not_covering (/.covering .._ (/.test "" true))
+          covering (/.covering .._ (in (unit.coverage [..dummy_target] true)))]
          (in (do async.monad
                [[not_covering _] not_covering
                 [covering _] covering]
-               (/.coverage' [/.coverage']
-                 (and (and (not (set.empty? (the /.#expected not_covering)))
-                           (not (set.member? (the /.#actual not_covering) (symbol ..dummy_target))))
-                      (and (not (set.empty? (the /.#expected covering)))
-                           (set.member? (the /.#actual covering) (symbol ..dummy_target))))))))
+               (unit.coverage [unit.coverage]
+                 (and (and (not (set.empty? (the unit.#expected not_covering)))
+                           (not (set.member? (the unit.#actual not_covering) (symbol ..dummy_target))))
+                      (and (not (set.empty? (the unit.#expected covering)))
+                           (set.member? (the unit.#actual covering) (symbol ..dummy_target))))))))
        (do random.monad
-         [not_covering (/.covering .._ (/.property "" true))
-          covering (/.covering .._ (/.for [..dummy_target] (/.property "" true)))]
+         [not_covering (/.covering .._ (/.test "" true))
+          covering (/.covering .._ (/.for [..dummy_target] (/.test "" true)))]
          (in (do async.monad
                [[not_covering _] not_covering
                 [covering _] covering]
-               (/.coverage' [/.for]
-                 (and (and (not (set.empty? (the /.#expected not_covering)))
-                           (not (set.member? (the /.#actual not_covering) (symbol ..dummy_target))))
-                      (and (not (set.empty? (the /.#expected covering)))
-                           (set.member? (the /.#actual covering) (symbol ..dummy_target))))))))
+               (unit.coverage [/.for]
+                 (and (and (not (set.empty? (the unit.#expected not_covering)))
+                           (not (set.member? (the unit.#actual not_covering) (symbol ..dummy_target))))
+                      (and (not (set.empty? (the unit.#expected covering)))
+                           (set.member? (the unit.#actual covering) (symbol ..dummy_target))))))))
        ))
 
 (def .public test
@@ -227,78 +228,78 @@
          expected_message/1 (random.only (|>> (text#= expected_message/0) not)
                                          (random.lower_case 5))]
         (all /.and
-             (/.for [/.Assertion]
-                    ..assertion)
+             (/.for [unit.Test]
+                    ..unit_test)
              (/.for [/.Seed]
                     seed)
              (do !
-               [success_assertion (/.property expected_message/0 true)
-                failure_assertion (/.property expected_message/0 false)]
+               [success_unit_test (/.test expected_message/0 true)
+                failure_unit_test (/.test expected_message/0 false)]
                (in (do async.monad
-                     [[success_tally success_message] success_assertion
-                      [failure_tally failure_message] failure_assertion]
-                     (/.coverage' [/.property]
+                     [[success_tally success_message] success_unit_test
+                      [failure_tally failure_message] failure_unit_test]
+                     (unit.coverage [/.test]
                        (and (text.ends_with? (%.text expected_message/0) success_message)
                             (text.ends_with? (%.text expected_message/0) failure_message)
-                            (and (n.= 1 (the /.#successes success_tally))
-                                 (n.= 0 (the /.#failures success_tally)))
-                            (and (n.= 0 (the /.#successes failure_tally))
-                                 (n.= 1 (the /.#failures failure_tally))))))))
+                            (and (n.= 1 (the unit.#successes success_tally))
+                                 (n.= 0 (the unit.#failures success_tally)))
+                            (and (n.= 0 (the unit.#successes failure_tally))
+                                 (n.= 1 (the unit.#failures failure_tally))))))))
              (do !
-               [tt (/.and (/.property expected_message/0 true)
-                          (/.property expected_message/1 true))
-                ff (/.and (/.property expected_message/0 false)
-                          (/.property expected_message/1 false))
-                tf (/.and (/.property expected_message/0 true)
-                          (/.property expected_message/1 false))
-                ft (/.and (/.property expected_message/0 false)
-                          (/.property expected_message/1 true))]
+               [tt (/.and (/.test expected_message/0 true)
+                          (/.test expected_message/1 true))
+                ff (/.and (/.test expected_message/0 false)
+                          (/.test expected_message/1 false))
+                tf (/.and (/.test expected_message/0 true)
+                          (/.test expected_message/1 false))
+                ft (/.and (/.test expected_message/0 false)
+                          (/.test expected_message/1 true))]
                (in (do async.monad
                      [tt tt
                       ff ff
                       tf tf
                       ft ft]
-                     (/.coverage' [/.and]
+                     (unit.coverage [/.and]
                        (and (..verify expected_message/0 expected_message/1 2 0 tt)
                             (..verify expected_message/0 expected_message/1 0 2 ff)
                             (..verify expected_message/0 expected_message/1 1 1 tf)
                             (..verify expected_message/0 expected_message/1 1 1 ft))))))
              (do !
-               [success_assertion (/.context expected_context (/.property expected_message/0 true))
-                failure_assertion (/.context expected_context (/.property expected_message/0 false))]
+               [success_unit_test (/.context expected_context (/.test expected_message/0 true))
+                failure_unit_test (/.context expected_context (/.test expected_message/0 false))]
                (in (do async.monad
-                     [[success_tally success_message] success_assertion
-                      [failure_tally failure_message] failure_assertion]
-                     (/.coverage' [/.context]
+                     [[success_tally success_message] success_unit_test
+                      [failure_tally failure_message] failure_unit_test]
+                     (unit.coverage [/.context]
                        (and (and (text.contains? expected_context success_message)
                                  (text.contains? expected_message/0 success_message))
                             (and (text.contains? expected_context failure_message)
                                  (text.contains? expected_message/0 failure_message))
-                            (and (n.= 1 (the /.#successes success_tally))
-                                 (n.= 0 (the /.#failures success_tally)))
-                            (and (n.= 0 (the /.#successes failure_tally))
-                                 (n.= 1 (the /.#failures failure_tally))))))))
+                            (and (n.= 1 (the unit.#successes success_tally))
+                                 (n.= 0 (the unit.#failures success_tally)))
+                            (and (n.= 0 (the unit.#successes failure_tally))
+                                 (n.= 1 (the unit.#failures failure_tally))))))))
              (do !
-               [failure_assertion (/.failure expected_message/0)]
+               [failure_unit_test (/.failure expected_message/0)]
                (in (do async.monad
-                     [[failure_tally failure_message] failure_assertion]
-                     (/.coverage' [/.failure]
+                     [[failure_tally failure_message] failure_unit_test]
+                     (unit.coverage [/.failure]
                        (and (text.contains? expected_message/0 failure_message)
-                            (and (n.= 0 (the /.#successes failure_tally))
-                                 (n.= 1 (the /.#failures failure_tally))))))))
+                            (and (n.= 0 (the unit.#successes failure_tally))
+                                 (n.= 1 (the unit.#failures failure_tally))))))))
              (do !
-               [success_assertion (/.lifted expected_message/0 (in true))
-                failure_assertion (/.lifted expected_message/0 (in false))]
+               [success_unit_test (/.lifted expected_message/0 (in true))
+                failure_unit_test (/.lifted expected_message/0 (in false))]
                (in (do async.monad
-                     [[success_tally success_message] success_assertion
-                      [failure_tally failure_message] failure_assertion]
-                     (/.coverage' [/.lifted]
+                     [[success_tally success_message] success_unit_test
+                      [failure_tally failure_message] failure_unit_test]
+                     (unit.coverage [/.lifted]
                        (and (text.contains? expected_message/0 success_message)
                             (text.contains? expected_message/0 failure_message)
-                            (and (n.= 1 (the /.#successes success_tally))
-                                 (n.= 0 (the /.#failures success_tally)))
-                            (and (n.= 0 (the /.#successes failure_tally))
-                                 (n.= 1 (the /.#failures failure_tally))))))))
+                            (and (n.= 1 (the unit.#successes success_tally))
+                                 (n.= 0 (the unit.#failures success_tally)))
+                            (and (n.= 0 (the unit.#successes failure_tally))
+                                 (n.= 1 (the unit.#failures failure_tally))))))))
              ..times
              ..in_parallel
              ..coverage
diff --git a/stdlib/source/test/lux/world/file.lux b/stdlib/source/test/lux/world/file.lux
index faebedb1f..ff12cb791 100644
--- a/stdlib/source/test/lux/world/file.lux
+++ b/stdlib/source/test/lux/world/file.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     ["[0]" monad (.only do)]]
    [control
@@ -24,7 +23,9 @@
      ["^" pattern]]]
    [world
     [time
-     ["[0]" instant (.only Instant)]]]]]
+     ["[0]" instant (.only Instant)]]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  ["[0]" /
   ["[1][0]" watch]]
  [\\library
@@ -255,7 +256,7 @@
              (in (do async.monad
                    [.let [fs (/.mock /)]
                     ? (at fs delete file)]
-                   (_.coverage' [/.cannot_delete]
+                   (unit.coverage [/.cannot_delete]
                      (case ?
                        {try.#Failure error}
                        (exception.match? /.cannot_delete error)
@@ -265,7 +266,7 @@
              (in (do async.monad
                    [.let [fs (/.mock /)]
                     ? (at fs read file)]
-                   (_.coverage' [/.cannot_find_file]
+                   (unit.coverage [/.cannot_find_file]
                      (case ?
                        {try.#Failure error}
                        (exception.match? /.cannot_find_file error)
@@ -276,7 +277,7 @@
                    [.let [fs (/.mock /)]
                     ?/0 (at fs directory_files file)
                     ?/1 (at fs sub_directories file)]
-                   (_.coverage' [/.cannot_find_directory]
+                   (unit.coverage [/.cannot_find_directory]
                      (case [?/0 ?/1]
                        [{try.#Failure error/0} {try.#Failure error/1}]
                        (and (exception.match? /.cannot_find_directory error/0)
diff --git a/stdlib/source/test/lux/world/file/watch.lux b/stdlib/source/test/lux/world/file/watch.lux
index 9977934a0..a56fce833 100644
--- a/stdlib/source/test/lux/world/file/watch.lux
+++ b/stdlib/source/test/lux/world/file/watch.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -18,7 +17,9 @@
     [collection
      ["[0]" list]]]
    [math
-    ["[0]" random (.only Random) (.use "[1]#[0]" monad)]]]]
+    ["[0]" random (.only Random) (.use "[1]#[0]" monad)]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" / (.only)
    ["/[1]" //]]]
@@ -74,7 +75,7 @@
          (in (do async.monad
                [?concern (at watcher concern directory)
                 ?stop (at watcher stop directory)]
-               (_.coverage' [/.not_being_watched]
+               (unit.coverage [/.not_being_watched]
                  (and (case ?concern
                         {try.#Failure error}
                         (exception.match? /.not_being_watched error)
@@ -182,7 +183,7 @@
                                        after_creation!
                                        after_modification!
                                        after_deletion!)))]
-                   (_.coverage' [/.mock /.polling]
+                   (unit.coverage [/.mock /.polling]
                      (try.else false verdict)))))
            (do random.monad
              [directory (random.alphabetic 5)
@@ -190,7 +191,7 @@
                     [fs watcher] (/.mock /)]]
              (in (do async.monad
                    [started? (at watcher start /.all directory)]
-                   (_.coverage' [/.cannot_poll_a_non_existent_directory]
+                   (unit.coverage [/.cannot_poll_a_non_existent_directory]
                      (case started?
                        {try.#Success _}
                        false
diff --git a/stdlib/source/test/lux/world/net/http/client.lux b/stdlib/source/test/lux/world/net/http/client.lux
index bd73d7e87..fcba904f9 100644
--- a/stdlib/source/test/lux/world/net/http/client.lux
+++ b/stdlib/source/test/lux/world/net/http/client.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only Monad do)]]
    [control
@@ -23,7 +22,9 @@
    [math
     ["[0]" random (.only Random)]
     [number
-     ["[0]" nat]]]]]
+     ["[0]" nat]]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" / (.only)
    ["/[1]" // (.only)
@@ -119,7 +120,7 @@
                                                 (verification ! <expected>))]
 
                                 <cases>))]
-                         (_.coverage' [/.async]
+                         (unit.coverage [/.async]
                            (and (,, (with_template [<definition> <expected>]
                                       [<expected>]
 
diff --git a/stdlib/source/test/lux/world/shell.lux b/stdlib/source/test/lux/world/shell.lux
index 09126a8a3..0e3b16ce9 100644
--- a/stdlib/source/test/lux/world/shell.lux
+++ b/stdlib/source/test/lux/world/shell.lux
@@ -1,7 +1,6 @@
 (.require
  [library
   [lux (.except)
-   ["_" test (.only Test)]
    [abstract
     [monad (.only do)]]
    [control
@@ -18,7 +17,9 @@
     ["[0]" random]
     [number
      ["n" nat]
-     ["i" int]]]]]
+     ["i" int]]]
+   ["_" test (.only Test)
+    ["[0]" unit]]]]
  [\\library
   ["[0]" / (.only)
    [//
@@ -123,6 +124,6 @@
                                        wrote!
                                        destroyed!
                                        (i.= exit await))))]
-                   (_.coverage' [/.Shell]
+                   (unit.coverage [/.Shell]
                      (try.else false verdict)))))
            )))
-- 
cgit v1.2.3