diff --git a/library/cassandra_hosts.py b/library/cassandra_hosts.py
index a3b086f..db2c2b0 100644
--- a/library/cassandra_hosts.py
+++ b/library/cassandra_hosts.py
@@ -1,7 +1,8 @@
 from ansible.module_utils.basic import *
 import ast
 import json
-import future_builtins
+import tempfile
+import os
 
 GROUPS = 'groups'
 PUBLIC_ADDRESS = 'public_address'
@@ -86,8 +87,9 @@
 
     inventory_hostname = module.params['inventory_hostname']
     hostvars = module.params['hostvars']
-    json_file_name = '/tmp/hostvars_params.json'
-    with open(json_file_name, 'w') as hostvars_file:
+    json_file = '/tmp/hostvars_params.json'
+    # json_file = tempfile.mkstemp(suffix='json', text=True)
+    with open(json_file, 'w') as hostvars_file:
         hostvars_file.write(hostvars)
 
     # hostvars = hostvars.decode('base64')
@@ -99,13 +101,16 @@
         hostvars = hostvars.replace(": u'", ": '")
         hostvars = hostvars.replace("[u'", "['")
         hostvars = hostvars.replace("'", "\"")
-        with open('hostvars_params.json', 'w') as file:
+        with open(json_file, 'w') as file:
             file.write(hostvars)
 
         try:
             hostvars = ast.literal_eval(hostvars)
         except SyntaxError as e:
             msg = "ast.literal_eval conversion failed on line {0} with {1}".format(e.lineno, e.msg)
+            msg += "This occurred due to an operating system setting. There is a way around."
+            msg += "This means that you will need re-run with --tags=apigee-silent-config to generate the silent-install.conf file."
+            msg += "Then complete the installation with --skip-tags=os-pre-req,apigee-pre-req."
             module.fail_json(
                 changed=False,
                 msg=msg,
@@ -113,7 +118,7 @@
             return
 
     hostvars = json.dumps(hostvars)
-    with open('hostvars_dumps.json', 'w') as hostvars_file:
+    with open(json_file, 'w') as hostvars_file:
         hostvars_file.write(hostvars)
 
     try:
diff --git a/library/what_region.py b/library/what_region.py
new file mode 100644
index 0000000..c97b4fd
--- /dev/null
+++ b/library/what_region.py
@@ -0,0 +1,82 @@
+from ansible.module_utils.basic import *
+import ast
+import json
+import tempfile
+
+
+
+
+def main():
+    module = AnsibleModule(
+        argument_spec=dict(
+            inventory_hostname=dict(required=True, type='str'),
+            groups=dict(required=True, type="str")
+        )
+    )
+
+    inventory_hostname = module.params['inventory_hostname']
+    groups = module.params['groups']
+    json_file_name = '/tmp/hostvars_params.json'
+    json_file = tempfile.mkstemp(suffix='json', text=True)
+    with open(json_file_name, 'w') as hostvars_file:
+        hostvars_file.write(hostvars)
+
+    # hostvars = hostvars.decode('base64')
+    try:
+        hostvars = ast.literal_eval(hostvars)
+    except SyntaxError as e:
+        hostvars = hostvars.replace('{u', '{')
+        hostvars = hostvars.replace(", u'", ", '")
+        hostvars = hostvars.replace(": u'", ": '")
+        hostvars = hostvars.replace("[u'", "['")
+        hostvars = hostvars.replace("'", "\"")
+        with open('hostvars_params.json', 'w') as file:
+            file.write(hostvars)
+
+        try:
+            hostvars = ast.literal_eval(hostvars)
+        except SyntaxError as e:
+            msg = "ast.literal_eval conversion failed on line {0} with {1}".format(e.lineno, e.msg)
+            module.fail_json(
+                changed=False,
+                msg=msg,
+            )
+            return
+
+    hostvars = json.dumps(hostvars)
+    with open('hostvars_dumps.json', 'w') as hostvars_file:
+        hostvars_file.write(hostvars)
+
+    try:
+        hostvars = json.loads(hostvars)
+    except SyntaxError as e:
+        msg = "json.loads conversion failed: {0} {1}".format(e.lineno, e.msg)
+        module.fail_json(
+            changed=False,
+            msg=msg,
+        )
+        return
+
+
+    try:
+        cass_hosts = build_cass_hosts_config(inventory_hostname, hostvars)
+    except SyntaxError as e:
+        msg = "build_cass_hosts_config failed on line {0} with {1}".format(e.lineno, e.msg)
+        module.fail_json(
+            changed=False,
+            msg=msg,
+        )
+        return
+
+    cass_hosts = json.dumps(cass_hosts)
+    cass_hosts = json.loads(cass_hosts)
+
+    module.exit_json(
+        changed=True,
+        ansible_facts=dict(
+            cassandra_hosts=cass_hosts
+        )
+    )
+
+if __name__ == '__main__':
+    main()
diff --git a/tasks/main.yml b/tasks/main.yml
index fcbb69b..1a0ac14 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -1,7 +1,6 @@
 ---
 # tasks file for apigee-opdk-setup-silent-file
 - name: Remove the old response file
-  become: yes
   file:
     path: "{{ opdk_installation_config_file }}"
     state: absent
diff --git a/templates/silent-install.conf.j2 b/templates/silent-install.conf.j2
index e31f37d..00682ba 100644
--- a/templates/silent-install.conf.j2
+++ b/templates/silent-install.conf.j2
@@ -21,15 +21,20 @@
 ENABLE_AX={{ opdk_enable_ax }}
 MP_POD={{ opdk_mp_pod }}
 
+{# TODO: Build a module that discover the region of the inventory_hostname and update the REGION #}
 {% if groups['dc-1'] is defined and inventory_hostname in groups['dc-1'] %}
 REGION=dc-1
 {% elif groups['dc-2'] is defined and inventory_hostname in groups['dc-2'] %}
 REGION=dc-2
+{% elif groups['dc-3'] is defined and inventory_hostname in groups['dc-3'] %}
+REGION=dc-3
 {% endif %}
 
 USE_ZK_CLUSTER={{ opdk_use_zk_cluster }}
+{# TODO: Build a module to construct the ZK_HOSTS value#}
 ZK_HOSTS="{% for host in groups['ds'] %}{{ hostvars[host][interface_name].ipv4.address }}{% if hostvars[host]['zk_observer'] is defined and hostvars[host]['zk_observer'] == 'true' %}:observer{% endif %}{% if not loop.last %} {% endif %}{% endfor %}"
 
+{# TODO: Build a module to construct the ZK_CLIENT_HOSTS value#}
 {% if groups['dc-1'] is defined and inventory_hostname in groups['dc-1'] %}
 ZK_CLIENT_HOSTS="{% for host in groups['dc-1-ds'] %}{{ hostvars[host][interface_name].ipv4.address }}{% if not loop.last %} {% endif %}{% endfor %}"
 {% elif groups['dc-2'] is defined and inventory_hostname in groups['dc-2']%}
