         }
 
         if let about = resource.aboutMultiple {
-            simple(.options, about)
+            multiple(.options, about)
         } else {
-            simple(.options) { request in
-                let methods: [String] = simpleMethods.map { $0.description }
+            multiple(.options) { request in
+                let methods: [String] = multipleMethods.map { $0.description }
                 return try JSON(node: [
                     "resource": path,
                     "methods": try JSON(node: methods)


    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
            }


public extension Resource {

    convenience public init(
        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,
