diff --git a/lib/openbmc_ffdc.py b/lib/openbmc_ffdc.py
index 59ecf5d..f2d2e09 100644
--- a/lib/openbmc_ffdc.py
+++ b/lib/openbmc_ffdc.py
@@ -7,7 +7,6 @@
 import os
 
 import gen_print as gp
-import gen_robot_print as grp
 import gen_valid as gv
 import gen_robot_keyword as grk
 import state as st
@@ -71,12 +70,12 @@
     BuiltIn().set_global_variable("${LOG_PREFIX}", LOG_PREFIX)
 
     cmd_buf = ["Create Directory", ffdc_dir_path]
-    grp.rqpissuing_keyword(cmd_buf)
+    gp.qprint_issuing(cmd_buf)
     status, output = BuiltIn().run_keyword_and_ignore_error(*cmd_buf)
     if status != "PASS":
-        error_message = grp.sprint_error_report("Create Directory failed"
-                                                + " with the following"
-                                                + " error:\n" + output)
+        error_message = gp.sprint_error_report("Create Directory failed"
+                                               + " with the following"
+                                               + " error:\n" + output)
         BuiltIn().fail(error_message)
 
     # FFDC_FILE_PATH is used by Header Message.
@@ -114,7 +113,7 @@
     # Note: Several subordinate functions like 'Get Test Dir and Name' and
     # 'Header Message' expect global variable FFDC_TIME to be set.
     cmd_buf = ["Get Current Time Stamp"]
-    grp.rdpissuing_keyword(cmd_buf)
+    gp.dprint_issuing(cmd_buf)
     FFDC_TIME = BuiltIn().run_keyword(*cmd_buf)
     BuiltIn().set_global_variable("${FFDC_TIME}", FFDC_TIME)
 
@@ -138,12 +137,12 @@
             error_message = gv.svalid_value(FFDC_LOG_PATH,
                                             var_name="FFDC_LOG_PATH")
             if error_message != "":
-                error_message = grp.sprint_error_report(error_message)
+                error_message = gp.sprint_error_report(error_message)
                 BuiltIn().fail(error_message)
             FFDC_LOG_PATH = os.path.normpath(FFDC_LOG_PATH) + os.sep
 
             cmd_buf = ["Get Test Dir and Name"]
-            grp.rpissuing_keyword(cmd_buf)
+            gp.print_issuing(cmd_buf)
             suitename, testname = BuiltIn().run_keyword(*cmd_buf)
 
             ffdc_dir_path = FFDC_LOG_PATH + suitename + "/" + testname + "/"
diff --git a/lib/state.py b/lib/state.py
index 298c686..a0cd4a9 100755
--- a/lib/state.py
+++ b/lib/state.py
@@ -28,7 +28,6 @@
 """
 
 import gen_print as gp
-import gen_robot_print as grp
 import gen_valid as gv
 import gen_robot_utils as gru
 import gen_cmd as gc
@@ -508,8 +507,8 @@
             # See sprint_issuing in gen_print.py for details.
             loc_test_mode = int(gp.get_var_value(var_name="test_mode",
                                                  default=0))
-            grp.rpissuing_keyword(cmd_buf, loc_test_mode)
-            gp.pissuing(remote_cmd_buf, loc_test_mode)
+            gp.print_issuing(cmd_buf, loc_test_mode)
+            gp.print_issuing(remote_cmd_buf, loc_test_mode)
         try:
             stdout, stderr, rc =\
                 BuiltIn().wait_until_keyword_succeeds("10 sec", "0 sec",
@@ -524,7 +523,7 @@
         if USE_BMC_EPOCH_TIME:
             cmd_buf = ["BMC Execute Command", date_cmd_buf, 'quiet=${1}']
             if not quiet:
-                grp.rpissuing_keyword(cmd_buf)
+                gp.print_issuing(cmd_buf)
             status, ret_values = \
                 BuiltIn().run_keyword_and_ignore_error(*cmd_buf)
             if status == "PASS":
@@ -549,7 +548,7 @@
     if need_rest:
         cmd_buf = ["Read Properties", SYSTEM_STATE_URI + "enumerate",
                    "quiet=${" + str(quiet) + "}"]
-        grp.rdpissuing_keyword(cmd_buf)
+        gp.dprint_issuing(cmd_buf)
         status, ret_values = \
             BuiltIn().run_keyword_and_ignore_error(*cmd_buf)
         if status == "PASS":
@@ -684,7 +683,12 @@
 
     quiet = int(gp.get_var_value(quiet, 0))
 
-    grp.rprint(print_string)
+    gp.gp_print(print_string)
+
+    try:
+        match_state = return_state_constant(match_state)
+    except TypeError:
+        pass
 
     req_states = match_state.keys()
     # Initialize state.
@@ -803,7 +807,7 @@
                "openbmc_password=" + openbmc_password, "os_host=" + os_host,
                "os_username=" + os_username, "os_password=" + os_password,
                "quiet=${" + str(check_state_quiet) + "}"]
-    grp.rdpissuing_keyword(cmd_buf)
+    gp.dprint_issuing(cmd_buf)
     try:
         state = BuiltIn().wait_until_keyword_succeeds(wait_time, interval,
                                                       *cmd_buf)
