join: clean up - factor out transform callback