Fleshing out engine and refactored code into more organized packages.