settings abstraction