add collision requirement & working collision detection