diff --git a/extended/code_update/update_bmc.robot b/extended/code_update/update_bmc.robot
index bf965b3..2acd439 100644
--- a/extended/code_update/update_bmc.robot
+++ b/extended/code_update/update_bmc.robot
@@ -28,7 +28,6 @@
 Library                 String
 
 Resource                code_update_utils.robot
-Resource                ../../lib/boot/boot_resource_master.robot
 Resource                ../../lib/state_manager.robot
 Resource                ../../lib/utils.robot
 Resource                ../../lib/list_utils.robot
diff --git a/lib/boot/boot_resource_master.robot b/lib/boot/boot_resource_master.robot
deleted file mode 100644
index 1c8e85a..0000000
--- a/lib/boot/boot_resource_master.robot
+++ /dev/null
@@ -1,5 +0,0 @@
-*** Settings ***
-# This file pulls in all of the other resource files in lib/boot/
-
-Resource    powerons.robot
-Resource    poweroffs.robot
diff --git a/lib/boot/poweroffs.py b/lib/boot/poweroffs.py
deleted file mode 100755
index ec2673c..0000000
--- a/lib/boot/poweroffs.py
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/env python
-
-r"""
-This module is the python counterpart to poweroffs.robot.  It provides
-functions for powering off an open bmc machine.
-"""
-
-import gen_robot_print as grp
-import state as state_mod
-import gen_robot_utils as gru
-
-from robot.libraries.BuiltIn import BuiltIn
-
-# We need utils.robot to get keyword "Initiate Power Off".
-gru.my_import_resource("utils.robot")
-
-
-###############################################################################
-def bmc_power_off():
-
-    r"""
-    Power the Open BMC machine off and monitor status to verify.
-    """
-
-    grp.rprint_timen("Refreshing state data.")
-    state = state_mod.get_state()
-    grp.rprint_var(state)
-
-    match_state = state_mod.anchor_state(state)
-
-    grp.rprintn()
-    cmd_buf = ["Initiate Power Off"]
-    grp.rpissuing_keyword(cmd_buf)
-    power = BuiltIn().run_keyword(*cmd_buf)
-
-    state_change_timeout = BuiltIn().get_variable_value(
-        "${STATE_CHANGE_TIMEOUT}", default="1 min")
-
-    # Wait for the state to change in any way.
-    state_mod.wait_state(match_state, wait_time=state_change_timeout,
-                         interval="3 seconds", invert=1)
-
-    if state_mod.OBMC_STATES_VERSION == 0:
-        cmd_buf = ["Create Dictionary", "power=${0}",
-                   "bmc=HOST_POWERED_OFF", "boot_progress=Off"]
-    else:
-        # TODO: Add back boot_progress when ipmi is enabled on Witherspoon.
-        cmd_buf = ["Create Dictionary", "chassis=Off",
-                   "bmc=Ready",
-                   #  "boot_progress=Off",
-                   "host=Off"]
-    grp.rdpissuing_keyword(cmd_buf)
-    final_state = BuiltIn().run_keyword(*cmd_buf)
-
-    final_state = state_mod.anchor_state(final_state)
-
-    grp.rprintn()
-    power_off_timeout = BuiltIn().get_variable_value(
-        "${POWER_OFF_TIMEOUT}", default="2 mins")
-    state_mod.wait_state(final_state, wait_time=power_off_timeout,
-                         interval="3 seconds")
-
-###############################################################################
diff --git a/lib/boot/poweroffs.robot b/lib/boot/poweroffs.robot
deleted file mode 100644
index 0e0ee08..0000000
--- a/lib/boot/poweroffs.robot
+++ /dev/null
@@ -1,33 +0,0 @@
-*** Settings ***
-Documentation  Contains all of the keywords that do various power offs.
-
-Resource    ../resource.txt
-Resource    ../utils.robot
-Resource    ../connection_client.robot
-
-*** Keywords ***
-BMC Power Off
-    [Documentation]  Powers off the system and makes sure that all states are
-    ...  powered off.
-
-    Open Connection and Log In
-    Initiate Power Off
-    Check Power Off States
-    Close Connection
-
-Check Power Off States
-    [Documentation]  Checks that the BMC state, power state, and boot progress
-    ...  are correctly powered off.
-
-    ${power_state}=  Get Power State
-    Should Be Equal  ${power_state}  ${0}
-    Log to Console  Power State: ${power_state}
-
-    ${boot_progress}=  Get Boot Progress
-    Should Be Equal  ${boot_progress}  Off
-    Log to Console  Boot Progress: ${boot_progress}
-
-    @{states}=     Create List   BMC_READY   HOST_POWERED_OFF
-    ${bmc_state}=  Get BMC State
-    Should Contain  ${states}   ${bmc_state}
-    Log to Console  BMC State: ${bmc_state}
diff --git a/lib/boot/powerons.py b/lib/boot/powerons.py
deleted file mode 100755
index 0977d4c..0000000
--- a/lib/boot/powerons.py
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/env python
-
-r"""
-This module is the python counterpart to utils.robot.  It provides many
-functions for communicating with the Open BMC machine.
-"""
-
-import gen_robot_print as grp
-import state as state_mod
-import gen_robot_utils as gru
-
-from robot.libraries.BuiltIn import BuiltIn
-
-# We need utils.robot to get keyword "Initiate Power On".
-gru.my_import_resource("utils.robot")
-
-
-###############################################################################
-def bmc_power_on():
-
-    r"""
-    Power the Open BMC machine on and monitor status to verify.
-    """
-
-    grp.rprint_timen("Refreshing state data.")
-    state = state_mod.get_state()
-    grp.rprint_var(state)
-
-    match_state = state_mod.anchor_state(state)
-
-    grp.rprintn()
-    cmd_buf = ["Initiate Power On", "wait=${0}"]
-    grp.rpissuing_keyword(cmd_buf)
-    power = BuiltIn().run_keyword(*cmd_buf)
-
-    state_change_timeout = BuiltIn().get_variable_value(
-        "${STATE_CHANGE_TIMEOUT}", default="1 min")
-
-    # Wait for the state to change in any way.
-    state_mod.wait_state(match_state, wait_time=state_change_timeout,
-                         interval="3 seconds", invert=1)
-
-    if state_mod.OBMC_STATES_VERSION == 0:
-        cmd_buf = ["Create Dictionary", "power=${1}",
-                   "bmc=HOST_BOOTED",
-                   "boot_progress=FW Progress, Starting OS"]
-    else:
-        # TODO: Add back boot_progress when ipmi is enabled on Witherspoon.
-        cmd_buf = ["Create Dictionary", "chassis=On",
-                   "bmc=Ready",
-                   #  "boot_progress=FW Progress, Starting OS",
-                   "host=Running"]
-    grp.rdpissuing_keyword(cmd_buf)
-    final_state = BuiltIn().run_keyword(*cmd_buf)
-
-    os_host = BuiltIn().get_variable_value("${OS_HOST}", default="")
-
-    if os_host != "":
-        final_state['os_ping'] = 1
-        final_state['os_login'] = 1
-        final_state['os_run_cmd'] = 1
-
-    final_state = state_mod.anchor_state(final_state)
-
-    grp.rprintn()
-    power_on_timeout = BuiltIn().get_variable_value(
-        "${POWER_ON_TIMEOUT}", default="14 mins")
-    state_mod.wait_state(final_state, wait_time=power_on_timeout,
-                         interval="3 seconds")
-
-###############################################################################
diff --git a/lib/boot/powerons.robot b/lib/boot/powerons.robot
deleted file mode 100644
index db35f67..0000000
--- a/lib/boot/powerons.robot
+++ /dev/null
@@ -1,40 +0,0 @@
-*** Settings ***
-Documentation  Contains all of the keywords that do various power ons.
-
-Resource    ../resource.txt
-Resource    ../utils.robot
-Resource    ../connection_client.robot
-
-*** Keywords ***
-BMC Power On
-    [Documentation]  Powers on the system, checks that the OS is functional, and
-    ...  makes sure that all states are powered on.
-
-    &{bmc_connection_args}=  Create Dictionary  alias=bmc_connection
-
-    Open Connection and Log In  &{bmc_connection_args}
-    Initiate Power On
-    Run Keyword If   '${OS_HOST}' != '${EMPTY}'   Wait For OS
-    Switch Connection  bmc_connection
-    Check Power On States
-    Close Connection
-
-Check Power On States
-    [Documentation]  Checks that the BMC state, power state, and boot progress
-    ...  are correctly powered on.
-
-    Wait Until Keyword Succeeds   ${OS_WAIT_TIMEOUT}  10sec  Is Host Booted
-
-    ${boot_progress}=  Get Boot Progress
-    Should Be Equal  ${boot_progress}  FW Progress, Starting OS
-    Log to Console  Boot Progress: ${boot_progress}
-
-    ${power_state}=  Get Power State
-    Should Be Equal  ${power_state}  ${1}
-    Log to Console  Power State: ${power_state}
-
-Is Host Booted
-    ${bmc_state}=  Get BMC State
-    Should Contain  ${bmc_state}  HOST_BOOTED
-    Log to Console  BMC State: ${bmc_state}
-
diff --git a/lib/boot/reboots.robot b/lib/boot/reboots.robot
deleted file mode 100644
index 314e10b..0000000
--- a/lib/boot/reboots.robot
+++ /dev/null
@@ -1,70 +0,0 @@
-*** Settings ***
-Documentation  Contains all keywords and supporting keywords to do various reboots.
-
-Resource    ../resource.txt
-Resource    ../utils.robot
-Resource    ../connection_client.robot
-Library     DateTime
-
-*** Keywords ***
-BMC Reboot
-    [Documentation]  Gets the uptime of the BMC, then reboots the BMC. If an OS_HOST
-    ...  is given, will also attempt to get the uptime of the OS Host and verify that
-    ...  the host stayed active during the reboot.
-
-    &{bmc_connection_args}=  Create Dictionary  alias=bmc_connection
-    ${OS_exists}=  Set Variable If  '${OS_HOST}' != '${EMPTY}'  ${True}
-    ...                             '${OS_HOST}' == '${EMPTY}'  ${False}
-
-    &{os_connection_args}=  Run Keyword If  ${OS_exists} == ${True}
-    ...  Create Dictionary  host=${OS_HOST}  alias=os_connection
-
-    Open Connection and Log In  &{bmc_connection_args}
-
-    ${bmc_start_uptime}=  Get Uptime In Seconds
-
-    ${conn_rc}=  Run Keyword and Return Status  Run Keyword If  ${OS_exists} == ${True}
-    ...  Open Connection and Log In  ${OS_USERNAME}  ${OS_PASSWORD}  &{os_connection_args}
-
-    ${OS_exists}=  Set Variable If  ${conn_rc} == False  ${False}
-
-    ${ping_rc}=  Run Keyword and Return Status  Ping Host  ${OS_HOST}
-    ${OS_exists}=  Set Variable If  ${ping_rc} == ${False}  ${False}
-
-    ${os_start_uptime}=  Run Keyword If  ${OS_exists} == ${True}   Get Uptime In Seconds
-
-    Validate or Open Connection  bmc_connection
-
-    Reboot BMC
-    Check If BMC Is Up
-
-    Close All Connections
-
-    Open Connection and Log In  &{bmc_connection_args}
-
-    ${bmc_end_uptime}=  Get Uptime In Seconds
-    Should Be True  ${bmc_end_uptime} < ${bmc_start_uptime}
-
-    Run Keyword If  ${OS_exists} == ${True}
-    ...  Open Connection and Log In  ${OS_USERNAME}  ${OS_PASSWORD}  &{os_connection_args}
-
-    ${os_end_uptime}=  Run Keyword If  ${OS_exists} == ${True}  Get Uptime In Seconds
-
-    Run Keyword If  ${OS_exists} == ${True}
-    ...  Should Be True  ${os_end_uptime} > ${os_start_uptime}
-
-    Close All Connections
-
-Get Uptime In Seconds
-    ${uptime_string}  ${stderr}  ${rc}=  Execute Command  cat /proc/uptime
-    ...  return_stderr=True  return_rc=True
-
-    Should Be Empty  ${stderr}
-    Should Be Equal  ${rc}  ${0}
-
-    ${uptime}  ${idle_time}=  Split String  ${uptime_string}  ${SPACE}
-
-    [Return]  ${uptime}
-
-Reboot BMC
-    Start Command  /sbin/reboot
