abstract config