diff --git a/extended/obmc_boot_test.robot b/extended/obmc_boot_test.robot
index 8c4714b..3b509bc 100644
--- a/extended/obmc_boot_test.robot
+++ b/extended/obmc_boot_test.robot
@@ -1,23 +1,10 @@
 *** Settings ***
 Documentation  Do random repeated boots based on the state of the BMC machine.
-...  The number of repetitions is designated by ${max_num_tests}. Keyword
-...  names that are listed in @{AVAIL_BOOTS} become the selection of possible
-...  boots for the test.
 
-Resource  ../lib/dvt/obmc_driver_vars.txt
-Resource  ../lib/list_utils.robot
-Resource  ../lib/openbmc_ffdc.robot
+Library   state.py
+Library   obmc_boot_test.py
 
-Library   ../lib/gen_robot_print.py
-Library   ../lib/gen_misc.py
-Library   ../lib/gen_robot_plug_in.py
-Library   ../lib/gen_robot_valid.py
-Library   ../lib/state.py
-Library   ../lib/boot/powerons.py
-Library   ../lib/boot/poweroffs.py
-Library   ../lib/obmc_boot_test.py
-
-#  WITH NAME  boot_results
+Resource  openbmc_ffdc.robot
 
 *** Variables ***
 # Initialize program parameters variables.
@@ -29,11 +16,11 @@
 ...  openbmc_serial_port  boot_stack  boot_list  max_num_tests
 ...  plug_in_dir_paths  status_file_path  openbmc_model  boot_pass  boot_fail
 ...  ffdc_dir_path_style  ffdc_check  state_change_timeout  power_on_timeout
-...  power_on_timeout  test_mode  quiet  debug
+...  power_off_timeout  test_mode  quiet  debug
 
 # Initialize each program parameter.
-${openbmc_nickname}         ${EMPTY}
 ${openbmc_host}             ${EMPTY}
+${openbmc_nickname}         ${openbmc_host}
 ${openbmc_username}         root
 ${openbmc_password}         0penBmc
 ${os_host}                  ${EMPTY}
@@ -65,25 +52,14 @@
 ${quiet}                    0
 ${debug}                    0
 
-
-# Plug-in variables.
-${shell_rc}                 0x00000000
-${fail_on_plug_in_failure}  1
-${return_on_non_zero_rc}    0
-
-${next_boot}                ${EMPTY}
-# State dictionary.  Initializing to a realistic state for testing in
-# test_mode.
-
 # Flag variables.
-${cp_setup_called}          ${0}
 # test_really_running is needed by DB_Logging plug-in.
 ${test_really_running}      ${1}
 
 *** Test Cases ***
-Randomized Boot Testing
-    [Documentation]  Performs random, repeated boots.
-    [Tags]  Randomized_boot_testing
+General Boot Testing
+    [Documentation]  Performs repeated boot tests.
+    [Tags]  General_boot_testing
 
     # Call the Main keyword to prevent any dots from appearing in the console
     # due to top level keywords.
@@ -94,215 +70,10 @@
 Main
     [Teardown]  Program Teardown
 
-    Setup
+    # This is the "Main" keyword.  The advantages of having this keyword vs
+    # just putting the code in the *** Test Cases *** table are:
+    # 1) You won't get a green dot in the output every time you run a keyword.
 
-    :For  ${BOOT_COUNT}  IN RANGE  ${max_num_tests}
-    \  Test Loop Body  ${BOOT_COUNT}
-
-    Rqprint Timen  Completed all requested boot tests.
+    Main Py
 
 ###############################################################################
-
-
-###############################################################################
-Setup
-    [Documentation]  Do general program setup tasks.
-
-    Validate Parms
-
-    Rqprint Pgm Header
-
-    Create Boot Results Table
-
-    # Preserve the values of boot_pass/boot_fail that were passed in.
-    Set Global Variable  ${initial_boot_pass}  ${boot_pass}
-    Set Global Variable  ${initial_boot_fail}  ${boot_fail}
-
-    # Call "setup" plug-ins, if any.
-    Plug In Setup
-    ${rc}  ${shell_rc}  ${failed_plug_in_name}=  Rprocess Plug In Packages
-    ...  call_point=setup
-    Should Be Equal  '${rc}'  '${0}'
-
-    # Keyword "FFDC" will fail if TEST_MESSAGE is not set.
-    Set Global Variable  ${TEST_MESSAGE}  ${EMPTY}
-
-    # Setting cp_setup_called lets our Teardown know that it needs to call
-    # the cleanup plug-in call point.
-    Set Global Variable  ${cp_setup_called}  ${1}
-
-    Rqprint Timen  Getting system state.
-    # The state dictionary must be primed before calling Test Loop Body.
-    ${temp_state}=  Run Keyword If  '${test_mode}' == '0'  Get State
-    ...  ELSE  Create Dictionary  &{default_state}
-    Set Global Variable  &{state}  &{temp_state}
-    Rqpvars  state
-
-###############################################################################
-
-
-###############################################################################
-Validate Parms
-    [Documentation]  Validate all program parameters.
-
-    Rqprintn
-
-    Rvalid Value  AVAIL_BOOTS
-    Rvalid Value  openbmc_host
-    Rvalid Value  openbmc_username
-    Rvalid Value  openbmc_password
-    # os_host is optional so no validation is being done.
-    Run Keyword If  '${OS_HOST}' != '${EMPTY}'  Run Keywords
-    ...  Rvalid Value  os_username  AND
-    ...  Rvalid Value  os_password
-    Rvalid Value  pdu_host
-    Rvalid Value  pdu_username
-    Rvalid Value  pdu_password
-    Rvalid Integer  pdu_slot_no
-    Rvalid Value  openbmc_serial_host
-    Rvalid Integer  openbmc_serial_port
-    Rvalid Integer  max_num_tests
-    Rvalid Value  openbmc_model
-    Rvalid Integer  boot_pass
-    Rvalid Integer  boot_fail
-
-    ${boot_pass_temp}=  Convert To Integer  ${boot_pass}
-    Set Global Variable  ${boot_pass}  ${boot_pass_temp}
-    ${boot_fail_temp}=  Convert To Integer  ${boot_fail}
-    Set Global Variable  ${boot_fail}  ${boot_fail_temp}
-
-    ${temp_arr}=  Rvalidate Plug Ins  ${plug_in_dir_paths}
-    Set Global Variable  @{plug_in_packages_list}  @{temp_arr}
-
-    Run Keyword If  '${openbmc_nickname}' == '${EMPTY}'
-    ...  Set Global Variable  ${openbmc_nickname}  ${openbmc_host}
-
-    Set FFDC Dir Path Style
-
-    ${default_state}=  Return Default State
-    Set Global Variable  ${state}  ${default_state}
-    Set Global Variable  ${default_state}  ${default_state}
-
-###############################################################################
-
-
-###############################################################################
-Set FFDC Dir Path Style
-
-    Run Keyword If  '${ffdc_dir_path_style}' != '${EMPTY}'  Return from Keyword
-
-    ${temp}=  Run Keyword and Continue On Failure  Get Environment Variable
-    ...  FFDC_DIR_PATH_STYLE  ${0}
-
-    Set Global Variable  ${ffdc_dir_path_style}  ${temp}
-
-###############################################################################
-
-
-###############################################################################
-Program Teardown
-    [Documentation]  Clean up after this program.
-
-    Run Keyword If  '${cp_setup_called}' == '1'  Run Keywords
-    ...  Plug In Setup  AND
-    ...  Rprocess Plug In Packages  call_point=cleanup
-    ...  stop_on_plug_in_failure=1
-
-    Rqprint Pgm Footer
-
-###############################################################################
-
-
-###############################################################################
-Test Loop Body
-    [Documentation]  The main loop body for the loop in "main".
-    [Arguments]  ${BOOT_COUNT}
-
-    Rqprintn
-    Rqprint Timen  Starting boot ${BOOT_COUNT+1} of ${max_num_tests}.
-
-    Rqpvars  state
-
-    ${loc_next_boot}=  Select Boot  ${state}
-    Set Global Variable  ${next_boot}  ${loc_next_boot}
-
-    # Clear this file.  Plug-ins may now write to it.
-    Remove File  ${FFDC_LIST_FILE_PATH}
-
-    ${status}  ${msg}=  Run Keyword And Ignore Error  Run Boot  ${next_boot}
-    Run Keyword If  '${status}' == 'FAIL'  rprint  ${msg}
-
-    Rqprintn
-    Run Keyword If  '${BOOT_STATUS}' == 'PASS'  Run Keywords
-    ...    Set Global Variable  ${boot_success}  ${1}  AND
-    ...    Rqprint Timen  BOOT_SUCCESS: "${next_boot}" succeeded.
-    ...  ELSE  Run Keywords
-    ...    Set Global Variable  ${boot_success}  ${0}  AND
-    ...      Rqprint Timen  BOOT_FAILED: ${next_boot} failed.
-
-    Update Boot Results Table  ${next_boot}  ${BOOT_STATUS}
-
-    # NOTE: A post_test_case call point failure is NOT counted as a boot
-    # failure.
-    Plug In Setup
-    ${rc}  ${shell_rc}  ${failed_plug_in_name}=  Rprocess Plug In Packages
-    ...  call_point=post_test_case  stop_on_plug_in_failure=1
-
-    ${rc}  ${shell_rc}  ${failed_plug_in_name}=  Rprocess Plug In Packages
-    ...  call_point=ffdc_check  shell_rc=${0x00000200}
-    ...  stop_on_plug_in_failure=1  stop_on_non_zero_rc=1
-
-    Run Keyword If
-    ...  '${BOOT_STATUS}' != 'PASS' or '${FFDC_CHECK}' == 'All' or '${shell_rc}' == '${0x00000200}'
-    ...  Run Keyword and Continue On Failure  My FFDC
-
-    # Run plug-ins to see if we ought to stop execution.
-    Plug In Setup
-    ${rc}  ${shell_rc}  ${failed_plug_in_name}=  Rprocess Plug In Packages
-    ...  call_point=stop_check
-    Run Keyword If  '${rc}' != '${0}'  Run Keywords
-    ...  Rprint Error Report  Stopping as requested by user.
-    ...  Fail
-
-    Print Boot Results Table
-    Rqprint Timen  Finished boot ${BOOT_COUNT+1} of ${max_num_tests}.
-
-    Rqprint Timen  Getting system state.
-    # The state must be refreshed before calling Test Loop Body again.
-    ${temp_state}=  Run Keyword If  '${test_mode}' == '0'  Get State
-    ...  quiet=${1}
-    ...  ELSE  Create Dictionary  &{default_state}
-    Set Global Variable  &{state}  &{temp_state}
-    Rqpvars  state
-
-###############################################################################
-
-
-###############################################################################
-Run Boot
-    [Documentation]  Run the selected boot and mark the status when complete.
-    [Arguments]  ${boot_keyword}
-    [Teardown]  Set Global Variable  ${BOOT_STATUS}  ${KEYWORD STATUS}
-
-    # boot_keyword     The name of the boot to run, which corresponds to the
-    #                  keyword to run. (i.e "BMC Power On")
-
-    Print Test Start Message  ${boot_keyword}
-
-    Plug In Setup
-    ${rc}  ${shell_rc}  ${failed_plug_in_name}=  Rprocess Plug In Packages
-    ...  call_point=pre_boot
-    Should Be Equal  '${rc}'  '${0}'
-
-    @{cmd_buf}=  Create List  ${boot_keyword}
-    rqpissuing_keyword  ${cmd_buf}  ${test_mode}
-    Run Keyword If  '${test_mode}' == '0'  Run Keyword  @{cmd_buf}
-
-    Plug In Setup
-    ${rc}  ${shell_rc}  ${failed_plug_in_name}=  Rprocess Plug In Packages
-    ...  call_point=post_boot
-    Should Be Equal  '${rc}'  '${0}'
-
-###############################################################################
-
-
