collision algorithm