     public func extract<T : NodeInitializable>(
         path: [PathIndex])
         throws -> [T]? {
-            return try self[path].flatMap { try [T](node: $0) }
+            return try node[path].flatMap { try [T](node: $0) }
     }
 
     public func extract<T : NodeInitializable>(

    public func extract<T : NodeInitializable>(
        path: [PathIndex])
        throws -> [String : T]? {
            guard let value = self[path] else { return nil }
            guard let object = value.nodeObject else {
                throw NodeError.unableToConvert(node: value, expected: "\([String: T].self)")
            }

    public func extract<T : NodeInitializable>(
        path: [PathIndex])
        throws -> [[T]]? {
            guard let initial = node[path] else { return nil }
            let array = initial.nodeArray ?? [initial]
            return try array.map { try [T](node: $0) }
    }
