simplified SelectiveFactory