diff --git a/bin/plug_ins/FFDC/cp_ffdc_check b/bin/plug_ins/FFDC/cp_ffdc_check
index b928658..8d51271 100755
--- a/bin/plug_ins/FFDC/cp_ffdc_check
+++ b/bin/plug_ins/FFDC/cp_ffdc_check
@@ -1,41 +1,35 @@
 #!/usr/bin/env python3
 
-from gen_arg import *
-from gen_call_robot import *
-from gen_cmd import *
-from gen_misc import *
-from gen_plug_in_utils import *
 from gen_print import *
 from gen_valid import *
+from gen_arg import *
+from gen_misc import *
+from gen_cmd import *
+from gen_plug_in_utils import *
+from gen_call_robot import *
 
 # Set exit_on_error for gen_valid functions.
 set_exit_on_error(True)
 
 parser = argparse.ArgumentParser(
-    usage="%(prog)s [OPTIONS]",
-    description=(
-        "%(prog)s will determine whether FFDC should be collected.  If so, it"
-        " will return "
-    )
-    + repr(dump_ffdc_rc())
-    + ".",
+    usage='%(prog)s [OPTIONS]',
+    description="%(prog)s will determine whether FFDC should be collected.  If so, it will return "
+    + repr(dump_ffdc_rc()) + ".",
     formatter_class=argparse.ArgumentDefaultsHelpFormatter,
-    prefix_chars="-+",
-)
+    prefix_chars='-+')
 
 # The stock_list will be passed to gen_get_options.  We populate it with the names of stock parm options we
 # want.  These stock parms are pre-defined by gen_get_options.
-stock_list = [
-    ("test_mode", get_plug_default("test_mode", 0)),
-    ("quiet", get_plug_default("quiet", 0)),
-    ("debug", get_plug_default("debug", 0)),
-]
+stock_list = [("test_mode", get_plug_default("test_mode", 0)),
+              ("quiet", get_plug_default("quiet", 0)),
+              ("debug", get_plug_default("debug", 0))]
 
 # For now we are hard-coding this value vs adding a soft_errors=boolean entry in the parm_def file.
 FFDC_SOFT_ERRORS = 1
 
 
-def exit_function(signal_number=0, frame=None):
+def exit_function(signal_number=0,
+                  frame=None):
     r"""
     Execute whenever the program ends normally or with the signals that we catch (i.e. TERM, INT).
 
@@ -58,15 +52,14 @@
 
 
 def main():
+
     gen_setup()
 
     print_plug_in_header()
 
     if FFDC_COMMAND.upper() == "FAIL":
         if AUTOBOOT_BOOT_SUCCESS == "0":
-            print_timen(
-                "The caller wishes to dump FFDC after each boot failure."
-            )
+            print_timen("The caller wishes to dump FFDC after each boot failure.")
             exit(dump_ffdc_rc())
     elif FFDC_COMMAND.upper() == "ALL":
         print_timen("The caller wishes to dump FFDC after each boot test.")
@@ -80,10 +73,8 @@
         # Check the num_error_logs value left by the Soft_errors plug-in.
         num_error_logs = int(restore_plug_in_value(0, "Soft_errors"))
         if num_error_logs > 0:
-            print_timen(
-                'The "Soft_errors" plug-in found soft_errors and the'
-                + " caller wishes to dump FFDC on soft errors."
-            )
+            print_timen("The \"Soft_errors\" plug-in found soft_errors and the"
+                        + " caller wishes to dump FFDC on soft errors.")
             exit(dump_ffdc_rc())
 
     print_timen("The caller does not wish for any FFDC to be collected.")
