separated out collision detector and resolver