Refactored a bit, added engine