make join() properly reset state after completing