Changed core and other modules to pass down Reasoning objects instead of general dictionaries. Also refactored code quite a bit.