huge refactoring: methods moved to classes, major logging improve

Can `settings.get('dockerurl')` return `None`? Would it be ok?