     func validMatch(request: Request, data: [String: String]) -> Bool {
         return method == request.method
     }
-
-    struct LinkView: HTMLView {
-        let path: String
-        let method: HTTPMethod
-
-        var render: String {
-            var pathString = path
-            if method == .GET {
-                pathString = Link(path, to: path).htmlString
-            }
-            return "\(method) \(pathString)"
-        }
-    }
-
-    var htmlString: String {
-        return LinkView(path: path, method: method).render
-    }
 }
 
 protocol HTTPRoutable {

    var htmlString: String { get }
}

struct RouteView: HTMLView {
    let routes: [HTMLPrintableRoute]

    var render: String {
        let listElements = routes.map { Li($0.htmlString) as HTMLElement }

        return HTML5(head: [], body: [
            H2("Route not found, how about one of these?"),
            Ul(listElements)
        ]).render
    }
}

extension FlyRouter where Route: HTMLPrintableRoute {

    var HTMLRouteList: String {
        let printableRoutes = routes.map { $0 as HTMLPrintableRoute }
        return RouteView(routes: printableRoutes).render
    }
}


typealias FlyAction = (FlyRequest, FlyResponse) -> FlyResponse
extension FlyRequest: Routable {}

struct HTTPRoute: RequestHandler, HTTPRoutable {
    typealias Request = FlyRequest
    typealias Response = FlyResponse

