    (segment-router compiled-routes {}))
   ([compiled-routes opts]
    (let [names (find-names compiled-routes opts)
-         [pl nl] (reduce
-                   (fn [[pl nl] [p {:keys [name] :as data} result]]
-                     (let [{:keys [path-params] :as route} (impl/create [p data result])
-                           f #(if-let [path (impl/path-for route %)]
-                                (->Match p data result % path)
-                                (->PartialMatch p data result % path-params))]
-                       [(segment/insert pl p (->Match p data result nil nil))
-                        (if name (assoc nl name f) nl)]))
-                   [nil {}] compiled-routes)
+         [pl nl] (segment-router-lookup-structs compiled-routes)
          lookup (impl/fast-map nl)
          routes (uncompile-routes compiled-routes)]
      ^{:type ::router}

         {:wilds wilds
          :routes compiled-routes})))
   (let [names (find-names compiled-routes opts)
         [pl nl] (reduce
                   (fn [[pl nl] [p {:keys [name] :as data} result]]
                     [(assoc pl p (->Match p data result {} p))
                      (if name
                        (assoc nl name #(->Match p data result % p))
                        nl)]) [{} {}] compiled-routes)
         data (impl/fast-map pl)
         lookup (impl/fast-map nl)
         routes (uncompile-routes compiled-routes)]

         (if-let [match (impl/fast-get lookup name)]
           (match (impl/path-params path-params))))))))

(defn- lookup-router-lookup-structs
  "Returns a 2-item vec of lookup structures.

  The first is a map of paths to Matches.
  The second is a map of route names to Matches."
  [compiled-routes]
  (reduce
    (fn [[pl nl] [p {:keys [name] :as data} result]]
      [(assoc pl p (->Match p data result {} p))
       (if name
         (assoc nl name #(->Match p data result % p))
         nl)])
    [{} {}]
    compiled-routes))

(defn lookup-router
  "Creates a lookup-router from resolved routes and optional
  expanded options. See [[router]] for available options"
