config is optional