     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 {

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

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


    var htmlString: String { get }
}

extension FlyRouter: HasHTML { }
extension FlyRouter where Route: HTMLPrintableRoute {

    var HTMLRouteList: String {
        return HTML5(head: [], body: [
            H2("Route not found, how about one of these?"),
            Ul(routes.map { Li($0.htmlString) })
        ]).render
    }
}

extension HTTPRoute: HTMLPrintableRoute {

    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
    }
}

