rename factory_method_with_reuse