LOTS of bug fixes
Initial level one implementation