Initial operator refactoring, introduce factory