separate collision detection and response