 
 public extension Resource {
 
-    @available(*, deprecated: 2.0, message: "Use init(index:new:create:show:replace:update:destroy:clear:aboutItem:aboutMultiple:)")
     convenience public init(
-        index: SimpleRequest? = nil,
-        store: SimpleRequest?, // default removed to avoid ambiguity
-        show: ItemRequest? = nil,
-        replace: ItemRequest? = nil,
-        modify: ItemRequest? = nil,
-        destroy: ItemRequest? = nil,
-        clear: SimpleRequest? = nil,
-        aboutItem: ItemRequest? = nil,
-        aboutMultiple: SimpleRequest? = nil
+        index: Multiple? = nil,
+        store: Multiple?, // default removed to avoid ambiguity
+        show: Item? = nil,
+        replace: Item? = nil,
+        modify: Item? = nil,
+        destroy: Item? = nil,
+        clear: Multiple? = nil,
+        aboutItem: Item? = nil,
+        aboutMultiple: Multiple? = nil
         ){
         self.init(index: index,
                   create: store,


    public func resource<Model: StringInitializable>(_ path: String, _ resource: Resource<Model>) {
        var itemMethods: [Method] = []
        var simpleMethods: [Method] = []

        let pathId = path.makeBytes().split(separator: .forwardSlash).joined(separator: [.hyphen]).split(separator: .colon).joined().string + "_id"

        func item(_ method: Method, subpath: String? = nil, _ item: Resource<Model>.ItemRequest?) {
            guard let item = item else {
                return
            }

            }
        }

        func multiple(_ method: Method, subpath: String? = nil, _ multiple: Resource<Model>.Multiple?) {
            guard let multiple = multiple else {
                return
            }

            multipleMethods += method

            if let subpath = subpath {
                self.add(method, path, subpath) { request in
                    return try multiple(request).makeResponse()
                }
            } else {
                self.add(method, path) { request in
                    return try multiple(request).makeResponse()
                }
            }
        }

        multiple(.get, resource.index)
        multiple(.get, subpath: "new", resource.new)
        item(.get, subpath: "edit", resource.edit)
        multiple(.post, resource.create)
        item(.get, resource.show)
        item(.put, resource.replace)
        item(.patch, resource.update)
        item(.delete, resource.destroy)
        multiple(.delete, resource.clear)

        if let about = resource.aboutItem {
            item(.options, about)
