Implement new collision fully

and it works perfectly!