Add Strategy Factory, refactor, document and tick up the version