diff --git a/wally/config.py b/wally/config.py
index e96a03e..46669f0 100644
--- a/wally/config.py
+++ b/wally/config.py
@@ -1,30 +1,45 @@
-from typing import Any, Dict
+from typing import Any, Dict, Optional
 from .storage import IStorable
 
-ConfigBlock = Dict[str, Any]
+ConfigBlock = Any
 
 
 class Config(IStorable):
-    # make mypy happy
-    run_uuid = None  # type: str
-    storage_url = None  # type: str
-    comment = None  # type: str
-    keep_vm = None  # type: bool
-    dont_discover_nodes = None  # type: bool
-    build_id = None  # type: str
-    build_description = None  # type: str
-    build_type = None  # type: str
-    default_test_local_folder = None  # type: str
-    settings_dir = None  # type: str
-    connect_timeout = 30  # type: int
-    no_tests = False  # type: bool
-
     def __init__(self, dct: ConfigBlock) -> None:
-        self.__dict__['_dct'] = dct
+        # make mypy happy, set fake dict
+        self.__dict__['_dct'] = {}
+        self.run_uuid = None  # type: str
+        self.storage_url = None  # type: str
+        self.comment = None  # type: str
+        self.keep_vm = None  # type: bool
+        self.dont_discover_nodes = None  # type: bool
+        self.build_id = None  # type: str
+        self.build_description = None  # type: str
+        self.build_type = None  # type: str
+        self.default_test_local_folder = None  # type: str
+        self.settings_dir = None  # type: str
+        self.connect_timeout = None  # type: int
+        self.no_tests = False  # type: bool
+        self.debug_agents = False  # type: bool
+
+        # None, disabled, enabled, metadata, ignore_errors
+        self.discovery = None  # type: Optional[str]
+
+        self.logging = None  # type: ConfigBlock
+        self.ceph = None  # type: ConfigBlock
+        self.openstack = None  # type: ConfigBlock
+        self.fuel = None  # type: ConfigBlock
+        self.test = None  # type: ConfigBlock
+        self.sensors = None  # type: ConfigBlock
+
+        self._dct.clear()
+        self._dct.update(dct)
+
+    def raw(self) -> ConfigBlock:
+        return self._dct
 
     def get(self, path: str, default: Any = None) -> Any:
         curr = self
-
         while path:
             if '/' in path:
                 name, path = path.split('/', 1)
@@ -41,7 +56,7 @@
 
     def __getattr__(self, name: str) -> Any:
         try:
-            val = self.__dct[name]
+            val = self._dct[name]
         except KeyError:
             raise AttributeError(name)
 
@@ -51,7 +66,7 @@
         return val
 
     def __setattr__(self, name: str, val: Any):
-        self.__dct[name] = val
+        self._dct[name] = val
 
     def __contains__(self, name: str) -> bool:
         return self.get(name) is not None
