 
 // MARK: Non-Optional
 
-extension Node {
+extension NodeBacked {
     public func extract<T : NodeInitializable>(
         _ path: PathIndex...)
         throws -> T {

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

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