rewrite lift() in terms of join()