try to make join() less complex