moved predicate to beginning of vector in join functions to look more like s-expressions