added factory_wrapper factory_interface encoder_factory