improved Join class