Renamed function to tidy up
Type alias to tidy up monad stack
Tidied up the selectReaction function
Rewrote the reaction performing code to be pure, haven't removed the old ones yet.
More tidying
more refactoring
Finally got the function working to run the system.