Rewritten most of the code to use the Artemis Framework.
Pushing the latest state just to save my work.