introduce a config struct