optimization for factory method