add JoinGenerator and HTMLJoinGenerator