ActionPool is a (complicated) singleton, however we want the action's lifetime to match the core By folding it into the core we can simplify the code