BROKEN: saving state before risky refactor
switch to a worker thread based model that is a fair bit slow for single threaded type use cases but can handle concurrency significantly better
ensure both Context and Pool conform to the same interfaces