diff --git a/_modules/maas.py b/_modules/maas.py
index b84b99f..0677fcd 100644
--- a/_modules/maas.py
+++ b/_modules/maas.py
@@ -55,7 +55,7 @@
 def _create_maas_client():
     global APIKEY_FILE
     try:
-        api_token = file(APIKEY_FILE).read().strip().split(':')
+        api_token = file(APIKEY_FILE).read().splitlines()[-1].strip().split(':')
     except:
         LOG.exception('token')
     auth = MAASOAuth(*api_token)
@@ -76,6 +76,8 @@
         LOG.info('%s %s', self.__class__.__name__.lower(), _format_data(data))
         if self._update:
             return self._maas.put(self._update_url.format(data[self._update_key]), **data).read()
+        if isinstance(self._create_url, tuple):
+            return self._maas.post(*self._create_url, **data).read()
         return self._maas.post(self._create_url, None, **data).read()
 
     def process(self):
@@ -89,8 +91,11 @@
                 url_call, key = url_call[:]
             extra[name] = {v['name']: v[key] for v in
                             json.loads(self._maas.get(url_call).read())}
-        elements = self._maas.get(self._all_elements_url).read()
-        all_elements = {v[self._element_key]: v for v in json.loads(elements)}
+        if self._all_elements_url:
+            elements = self._maas.get(self._all_elements_url).read()
+            all_elements = {v[self._element_key]: v for v in json.loads(elements)}
+        else:
+            all_elements = {}
         ret = {
             'success': [],
             'errors': {},
@@ -127,7 +132,6 @@
         self._create_url = u'api/2.0/fabrics/'
         self._update_url = u'api/2.0/fabrics/{0}/'
         self._config_path = 'region.fabrics'
-#        self._update_keys = ['name', 'description', 'class_type', 'id']
 
     def fill_data(self, name, fabric):
         data = {
@@ -361,6 +365,44 @@
         self._update = False
         return new
 
+class CommissioningScripts(MaasObject):
+    def __init__(self):
+        super(CommissioningScripts, self).__init__()
+        self._all_elements_url = u'api/2.0/commissioning-scripts/'
+        self._create_url = u'api/2.0/commissioning-scripts/'
+        self._update_url = u'api/2.0/commissioning-scripts/{0}/'
+        self._config_path = 'region.commissioning_scripts'
+        self._update_key = 'name'
+
+    def fill_data(self, name, file_path):
+        data = {
+            'name': name,
+            'content': io.open(file_path),
+        }
+        return data
+
+    def update(self, new, old):
+        return new
+
+class MaasConfig(MaasObject):
+    def __init__(self):
+        super(MaasConfig, self).__init__()
+        self._all_elements_url = None
+        self._create_url = (u'api/2.0/maas/', u'set_config')
+        self._config_path = 'region.maas_config'
+
+    def fill_data(self, name, value):
+        data = {
+            'name': name,
+            'value': value,
+        }
+        return data
+
+    def update(self, new, old):
+        self._update = False
+        return new
+
+
 def process_fabrics():
     return Fabric().process()
 
@@ -381,3 +423,9 @@
 
 def process_boot_resources():
     return BootResource().process()
+
+def process_maas_config():
+    return MaasConfig().process()
+
+def process_commissioning_scripts():
+    return CommissioningScripts().process()
diff --git a/maas/region.sls b/maas/region.sls
index 3987ade..16c7f24 100644
--- a/maas/region.sls
+++ b/maas/region.sls
@@ -83,50 +83,66 @@
   cmd.run:
   - name: "maas-region apikey --username {{ region.admin.username }} > /var/lib/maas/.maas_credentials"
 
+maas_config:
+  module.run:
+  - name: maas.process_maas_config
+  - require:
+    - cmd: maas_login_admin
+
+maas_commissioning_scripts:
+  module.run:
+  - name: maas.process_commissioning_scripts
+  - require:
+    - module: maas_config
+
 maas_fabrics:
   module.run:
   - name: maas.process_fabrics
   - require:
-    - cmd: maas_login_admin
+    - module: maas_config
 
 maas_subnets:
   module.run:
   - name: maas.process_subnets
   - require:
-    - cmd: maas_login_admin
+    - module: maas_config
     - module: maas_fabrics
+    - module: maas_config
 
 maas_devices:
   module.run:
   - name: maas.process_devices
   - require:
-    - cmd: maas_login_admin
+    - module: maas_config
     - module: maas_subnets
+    - module: maas_config
 
 maas_machines:
   module.run:
   - name: maas.process_machines
   - require:
-    - cmd: maas_login_admin
+    - module: maas_config
     - module: maas_subnets
+    - module: maas_config
+    - module: maas_commissioning_scripts
 
 maas_dhcp_snippets:
   module.run:
   - name: maas.process_dhcp_snippets
   - require:
-    - cmd: maas_login_admin
+    - module: maas_config
 
 maas_package_repositories:
   module.run:
   - name: maas.process_package_repositories
   - require:
-    - cmd: maas_login_admin
+    - module: maas_config
+    - module: maas_config
 
 maas_boot_resources:
   module.run:
   - name: maas.process_boot_resources
   - require:
-    - cmd: maas_login_admin
+    - module: maas_config
 
 {%- endif %}
-
