Made the dumb loop work with Monad/MonadIO/Pure functions for 'processing' commands, so the idea seems to have merit, still unsure how to adapt this to feed into concurrency but can probably do that later