config and additional abstraction