 
 let pool = rdbc.pool(url: "sqlite:///tmp/crlrsdc.sqlite")
 
-let t1 = pool.select(from: "test1").map(["firstname"])
+let t1 = pool.select(from: "test1").map{ $0["firstname"] }
 let t2 = pool.select(from: "test2").map("lastname")
 
 t1.join(t2).map { t1, t2 in
-    ["a", "b"]
+    [t1["a"], t2["b"]]
 }
 
 //t1.join(t2) { t1, t2 in t1["id"] == t2["id"] }.filter { t1, _ in t1["firstname"] == "Daniel" || t2["lastname"] == "Lennon" }


public protocol Table : Named, Dataset {
    var columns:Columns {get}
}

public struct ErasedTable : Table {

}

public extension Query where DS : Table {
    public func map(_ f: (DS)->Column) -> QueryImpl<ErasedTable> {
        let names = [f(self.dataset).name]
        return map(names)
    }
    
    public func map(_ f: (DS)->[Column]) -> QueryImpl<ErasedTable> {
        let names = f(self.dataset).map{$0.name}
        return map(names)
    }
    
    public func map(_ f: @autoclosure (DS)->[String]) -> QueryImpl<ErasedTable> {
        let dataset = ErasedTable(name: self.dataset.name, columns: .list(f(self.dataset)))
        return QueryImpl(connection: connection,
