more generic collision avoidance