fix join semantics