Refactored to make the project a little more relevant to scala interpretation