improve join logic to handle more cases
update changelog