Move factor implementations under dedicated package