diff --git a/geissonator/openbmc-events/openbmc-events b/geissonator/openbmc-events/openbmc-events
index fc2ec65..08717e3 100755
--- a/geissonator/openbmc-events/openbmc-events
+++ b/geissonator/openbmc-events/openbmc-events
@@ -5,9 +5,6 @@
 import json
 
 import urllib3
-from warnings import catch_warnings
-urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
-
 
 class BMC:
     def __init__(self, server):
@@ -68,7 +65,7 @@
         j = r.json()
         if j['message'] == '404 Not Found':
             print "No dumps on system\n"
-            return
+            return []
         if j['status'] != 'ok':
             raise Exception("Failed to list dumps: \n" + r.text)
 
@@ -80,8 +77,7 @@
     def create_dump(self):
         r = self.session.post(self.url + 'xyz/openbmc_project/dump/action/CreateDump',
                               headers={'Content-Type': 'application/json'},
-                              data='{"data":[]}',
-                              verify=False)
+                              data='{"data":[]}')
         j = r.json()
         if j['status'] != 'ok':
             raise Exception("Failed to create dump: \n" + r.text)
@@ -122,12 +118,8 @@
 
 def do_list_dumps(args):
     s = BMC(server=args.server)
-    try:
-        for e in s.list_dumps():
-            print(e)
-    except:
-        # ignore if we get nothing back
-        return;
+    for e in s.list_dumps():
+        print(e)
 
 def do_create_dump(args):
     s = BMC(server=args.server)
@@ -164,6 +156,8 @@
 parser = argparse.ArgumentParser()
 parser.add_argument('--server', help='hostname or IP of BMC', type=str,
                     required=True)
+parser.add_argument('--suppress-insecure-warnings', '-I', action="store_true",
+                    default=False)
 
 subparsers = parser.add_subparsers()
 
@@ -211,6 +205,10 @@
 
 args = parser.parse_args()
 
+if args.suppress_insecure_warnings:
+    from requests.packages.urllib3.exceptions import InsecureRequestWarning
+    requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
+
 if 'func' in args:
     args.func(args)
 else:
diff --git a/geissonator/openbmc-events/openbmc-sfw b/geissonator/openbmc-events/openbmc-sfw
index f4d5382..67a8ec3 100755
--- a/geissonator/openbmc-events/openbmc-sfw
+++ b/geissonator/openbmc-events/openbmc-sfw
@@ -6,9 +6,6 @@
 import time
 import json
 
-import urllib3
-urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
-
 class BMC:
     def __init__(self, server):
         self.url = "https://{0}/".format(server)
