Initial upload of phase 2.  Contains most functionality for phase 2.  Collision testing still needs to be done.