   [key optional-key-exists-with-binding-clause-key
    binding optional-key-exists-with-binding-clause-binding])
 
-(defn key-exists-without-binding-clause
-  "Returns a clause that asserts the existence of a non-nil value at `key`."
-  [key]
-  (make-key-exists-without-binding-clause key))
-
-(defn key-exists-with-binding-clause
-  "Returns a clause that asserts the existence of a non-nil value at `key`."
-  [key bind]
-  (make-key-exists-with-binding-clause key bind))
-
-(defn optional-key-exists-without-binding-clause
-  "Returns an optional clause that asserts the existence of a non-nil value at `key`."
-  [key]
-  (make-optional-key-exists-without-binding-clause key))
-
 (defn optional-key-exists-with-binding-clause
   "Returns an optional clause that asserts the existence of a non-nil value at `key`."
   [key bind]
   (make-optional-key-exists-with-binding-clause key bind))
 
 ;; 2.
-(define-record-type
+(define-record-type PathExistsWithoutBindingClause
   ^{:doc "A clause that asserts the existence of a non-nil value in a map at the `path`."}
-  PathExistsWithoutBindingClause
   (make-path-exists-without-binding-clause path)
   path-exists-without-binding-clause?
   [path path-exists-without-binding-clause-path])
 
-(define-record-type
+(defn path-exists-without-binding-clause
+  "Returns a clause that asserts the existence of a non-nil value at `key`."
+  [path]
+  (make-path-exists-without-binding-clause path))
+
+(define-record-type PathExistsWithBindingClause
   ^{:doc "A clause that asserts the existence of a non-nil value in a map at the `path`. When evaluated, binds it's result to `binding`."}
-  PathExistsWithBindingClause
   (make-path-exists-with-binding-clause path binding)
   path-exists-with-binding-clause?
   [path path-exists-with-binding-clause-path
    binding path-exists-with-binding-clause-binding])
 
-(define-record-type
+(defn path-exists-with-binding-clause
+  "Returns a clause that asserts the existence of a non-nil value at `key`."
+  [path bind]
+  (make-path-exists-with-binding-clause path bind))
+
+(define-record-type OptionalPathExistsWithoutBindingClause
   ^{:doc "An optional clause that asserts the existence of a non-nil value in a map at the `path`."}
-  OptionalPathExistsWithoutBindingClause
   (make-optional-path-exists-without-binding-clause path)
   optional-path-exists-without-binding-clause?
   [path optional-path-exists-without-binding-clause-path])
 
-(define-record-type
+(defn optional-path-exists-without-binding-clause
+  "Returns an optional clause that asserts the existence of a non-nil value at `key`."
+  [path]
+  (make-optional-path-exists-without-binding-clause path))
+
+(define-record-type OptionalPathExistsWithBindingClause
   ^{:doc "An optional clause that asserts the existence of a non-nil value in a map at the `path`. When evaluated, binds it's result to `binding`."}
-  OptionalPathExistsWithBindingClause
   (make-optional-path-exists-with-binding-clause path binding)
   optional-path-exists-with-binding-clause?
   [path optional-path-exists-with-binding-clause-path
    binding optional-path-exists-with-binding-clause-binding])
 
-(defn path-exists-without-binding-clause
-  "Returns a clause that asserts the existence of a non-nil value at `key`."
-  [path]
-  (make-path-exists-without-binding-clause path))
-
-(defn path-exists-with-binding-clause
-  "Returns a clause that asserts the existence of a non-nil value at `key`."
-  [path bind]
-  (make-path-exists-with-binding-clause path bind))
-
-(defn optional-path-exists-without-binding-clause
-  "Returns an optional clause that asserts the existence of a non-nil value at `key`."
-  [path]
-  (make-optional-path-exists-without-binding-clause path))
-
 (defn optional-path-exists-with-binding-clause
   "Returns an optional clause that asserts the existence of a non-nil value at `key`."
   [path bind]
   (make-optional-path-exists-with-binding-clause path bind))
 
 ;; 3.
-(define-record-type
+(define-record-type KeyMatchesWithoutBindingClause
   ^{:doc "A clause that matches the value of `key` of a map using `matcher`."}
-  KeyMatchesWithoutBindingClause
   (make-key-matches-without-binding-clause key matcher)
   key-matches-without-binding-clause?
   [key key-matches-without-binding-clause-key
    matcher key-matches-without-binding-clause-matcher])
 
-(define-record-type
+(defn key-matches-without-binding-clause
+  "Returns a clause that matches a `key` with a certain `matcher`."
+  [key matcher]
+  {:pre [(matcher? matcher)]}
+  (make-key-matches-without-binding-clause key matcher))
+
+(define-record-type KeyMatchesWithBindingClause
   ^{:doc "A clause that matches the value of `key` of a map using `matcher`. When evaluated, binds it's result to `binding`."}
-  KeyMatchesWithBindingClause
   (make-key-matches-with-binding-clause key matcher binding)
   key-matches-with-binding-clause?
   [key key-matches-with-binding-clause-key
    matcher key-matches-with-binding-clause-matcher
    binding key-matches-with-binding-clause-binding])
-
-(define-record-type
-  ^{:doc "An optional clause that matches the value of `key`."}
-  OptionalKeyMatchesWithoutBindingClause
-  (make-optional-key-matches-without-binding-clause key)
-  optional-key-matches-without-binding-clause?
-  [key optional-key-matches-without-binding-clause-key])
-
-(define-record-type
-  ^{:doc "An optional clause with a default value for `key`. When evaluated, binds it's result to `binding`. If `key` does not exist, binds to `default-value`."}
-  OptionalKeyWithDefaultBindingClause
-  (make-optional-key-with-default-binding-clause key default-value binding)
-  optional-key-with-default-binding-clause?
-  [key optional-key-with-default-binding-clause-key
-   default-value optional-key-with-default-binding-clause-default-value
-   binding optional-key-with-default-binding-clause])
-
-(defn key-matches-without-binding-clause
-  "Returns a clause that matches a `key` with a certain `matcher`."
-  [key matcher]
-  {:pre [(matcher? matcher)]}
-  (make-key-matches-without-binding-clause key matcher))
 
 (defn key-matches-with-binding-clause
   "Returns a clause that matches a `key` with a certain `matcher`, binding the

        `({~key ~'_} :guard ~(match-value message [key]))
        `{~key ~(match-value message [key])}))

    (optional-key-matches-without-binding-clause? clause)
    {}

    (optional-key-with-default-binding-clause? clause)

  key-exists-without-binding-clause?
  [key key-exists-without-binding-clause-key])

(defn key-exists-without-binding-clause
  "Returns a clause that asserts the existence of a non-nil value at `key`."
  [key]
  (make-key-exists-without-binding-clause key))

(define-record-type KeyExistsWithBindingClause
  ^{:doc "A clause that asserts the existence of a non-nil value in a map at the `key`. When evaluated, binds it's result to `binding`."}
  (make-key-exists-with-binding-clause key binding)
