Add better collision detection

and also much more confusing :)