refactoring stragegies out of core as plugins