move most of SafeJoin code in the Behavior