settings backend rewrite with OOP design patterns