use factory for alpha impl