diff --git a/scripts/generate_driver_wrappers.py b/scripts/generate_driver_wrappers.py
index 097edd9..97e8bfd 100755
--- a/scripts/generate_driver_wrappers.py
+++ b/scripts/generate_driver_wrappers.py
@@ -23,7 +23,7 @@
 import sys
 import os
 import json
-from typing import Tuple, NewType
+from typing import Tuple, NewType, Dict, Any
 import argparse
 import jsonschema
 import jinja2
@@ -34,6 +34,13 @@
 # keep MyPy happy till MyPy comes with a more composite type for JsonObjects.
 Driver = NewType('Driver', dict)
 
+
+class JsonValidationException(Exception):
+    def __init__(self, message="Json Validation Failed"):
+        self.message = message
+        super().__init__(self.message)
+
+
 def render(template_path: str, driver_jsoncontext: list) -> str:
     """
     Render template from the input file and driver JSON.
@@ -93,8 +100,17 @@
 
     return True
 
+
+def load_driver(schemas: Dict[str, Any], driver_file: str) -> Any:
+    with open(driver_file, 'r') as f:
+        json_data = json.load(f)
+        if not validate_json(json_data, schemas):
+            raise JsonValidationException()
+        return json_data
+
+
 def read_driver_descriptions(mbedtls_root: str, json_directory: str, \
-                          jsondriver_list: str) -> Tuple[bool, list]:
+                             jsondriver_list: str) -> Tuple[bool, list]:
     """
     Merge driver JSON files into a single ordered JSON after validation.
     """
@@ -112,18 +128,17 @@
                            'driver_opaque_schema.json'), 'r') as file:
         opaque_driver_schema = json.load(file)
 
-    driver_schema_list = {'transparent':transparent_driver_schema,
-                          'opaque':opaque_driver_schema}
-
+    driver_schema = {'transparent': transparent_driver_schema,
+                     'opaque': opaque_driver_schema}
     with open(os.path.join(json_directory, jsondriver_list), 'r') as driverlistfile:
-        driverlist = json.load(driverlistfile)
-    for file_name in driverlist:
-        with open(os.path.join(json_directory, file_name), 'r') as infile:
-            json_data = json.load(infile)
-            ret = validate_json(json_data, driver_schema_list)
-            if ret is False:
-                return ret, []
-            result.append(json_data)
+        driver_list = json.load(driverlistfile)
+
+    try:
+        result = [load_driver(driver_schema, driver_file=os.path.join(json_directory, driver_file_name))
+                  for driver_file_name in driver_list]
+    except JsonValidationException as _:
+        return False, []
+
     return True, result
 
 
@@ -172,5 +187,6 @@
 
     return 0
 
+
 if __name__ == '__main__':
     sys.exit(main())
