fit factory_method