Some refactoring to allow dynamic swapping of execution strategy