#10 - OO refactor, settings and layout