add config setup and abstract controller