Added a little quick'n dirty collision detection and lots of refinement