diff --git a/libraries/utils.robot b/libraries/utils.robot
index 36a105d..53479cf 100755
--- a/libraries/utils.robot
+++ b/libraries/utils.robot
@@ -113,7 +113,7 @@
         ${count}=    Run Keyword If    '${serial_number}' == '${sn}'    Evaluate    ${count} + 1
         ...          ELSE  Set Variable  ${count}
     END
-    [Return]    ${count}
+    RETURN    ${count}
 
 Get ONU List For OLT
     [Arguments]    ${src}    ${serial_number}
@@ -125,7 +125,7 @@
         Run Keyword If    '${serial_number}' == '${sn}'    Append To List     ${onu_list}    ${src}[${I}][onu]
         ...  ELSE  Set Variable  ${onu_list}
     END
-    [Return]    ${onu_list}
+    RETURN    ${onu_list}
 
 WPA Reassociate
     [Documentation]    Executes a particular wpa_cli reassociate, which performs force reassociation
@@ -178,7 +178,7 @@
     ...    ${pass}    ${container_type}    ${container_name}
     Log    ${result}
     #Should Contain    ${result}    DHCPRELEASE
-    [Return]    ${result}
+    RETURN    ${result}
 
 Check Remote File Contents For WPA Logs
     [Arguments]    ${file_should_exist}    ${file}    ${pattern}    ${ip}    ${user}    ${pass}=${None}
@@ -187,7 +187,7 @@
     ${result}=    Login And Run Command On Remote System
     ...    cat ${file} | grep '${pattern}' | wc -l    ${ip}    ${user}    ${pass}
     ...    ${container_type}    ${container_name}    ${prompt}
-    [Return]    ${result}
+    RETURN    ${result}
 
 Perform Sanity Test
     [Documentation]    This keyword iterate all OLTs and performs Sanity Test Procedure
@@ -751,7 +751,7 @@
         ${of_id}=    Run Keyword IF    "${serial_number}"=="${sn}"
         ...    Get From Dictionary    ${olt_ids}[${I}]    of_id    ELSE    Set Variable    ${of_id}
     END
-    [Return]    ${of_id}
+    RETURN    ${of_id}
 
 Get OLTDeviceID From OLT List
     [Documentation]    Retrieves the corresponding olt_device_id  for the OLT serial number specified
@@ -762,7 +762,7 @@
         ${olt_device_id}=    Run Keyword IF    "${serial_number}"=="${sn}"
         ...    Get From Dictionary    ${olt_ids}[${I}]    device_id    ELSE    Set Variable    ${olt_device_id}
     END
-    [Return]    ${olt_device_id}
+    RETURN    ${olt_device_id}
 
 Get Num of Onus From OLT SN
     [Documentation]    Retrieves the corresponding number of ONUs for a given OLT based on serial number specified
@@ -773,7 +773,7 @@
         ${num_of_olt_onus}=    Run Keyword IF    "${serial_number}"=="${sn}"
         ...    Get From Dictionary    ${list_olts}[${I}]    onucount    ELSE    Set Variable    ${num_of_olt_onus}
     END
-    [Return]    ${num_of_olt_onus}
+    RETURN    ${num_of_olt_onus}
 
 Validate ONUs After OLT Disable
     [Documentation]    Validates the ONUs state in Voltha, ONUs port state in ONOS
@@ -840,7 +840,7 @@
     Wait Until Keyword Succeeds    ${timeout}    5s
     ...    Validate OLT Device    DISABLED    UNKNOWN    REACHABLE    ${olt_serial_number}
     ${rc}    ${output}=    Run and Return Rc and Output
-    ...    voltctl -c ${VOLTCTL_CONFIG} device delete ${olt_device_id}
+    ...    voltctl -c ${VOLTCTL_CONFIG} device delete ${olt_device_id} --force
     Sleep    50s
     Should Be Equal As Integers    ${rc}    0   Could not delete device ${olt_device_id}
     Wait Until Keyword Succeeds    ${timeout}    5s    Validate Device Removed    ${olt_device_id}
@@ -1151,7 +1151,7 @@
         ${matched}=    Set Variable If    '${onu_device_id}' == '${olt_peer}'    True    False
         Exit For Loop If    ${matched}
     END
-    [Return]    ${matched}
+    RETURN    ${matched}
 
 Collect Logs
     [Documentation]    Collect Logs from voltha and onos cli for various commands
@@ -1368,14 +1368,14 @@
 Get Current Time
     [Documentation]    Return the current time in RFC3339 format
     ${output}=    Run    date -u +"%FT%T%:z"
-    [return]     ${output}
+    RETURN    ${output}
 
 Parse RFC3339
     [Documentation]     Parse an RFC3339 timestamp
     [Arguments]    ${dateStr}
     ${rc}    ${output}=    Run and Return Rc and Output     date --date="${dateStr}" "+%s"
     Should Be Equal As Numbers    ${rc}    0
-    [return]    ${output}
+    RETURN    ${output}
 
 Get Bandwidth Profile Name For Given Subscriber
     [Arguments]    ${subscriber_id}   ${stream_type}=upstreamBandwidthProfile    ${service_type}=${EMPTY}
@@ -1398,7 +1398,7 @@
         Run Keyword If    "${bandwidth_profile_name}" != "None"    Exit For Loop
     END
     Log    ${bandwidth_profile_name}
-    [Return]    ${bandwidth_profile_name}
+    RETURN    ${bandwidth_profile_name}
 
 Execute Remote Command
     [Documentation]    SSH into a remote host and execute a command on the bare host or in a container.
@@ -1425,7 +1425,7 @@
     Log    ${stderr}
     Log    ${rc}
     SSHLibrary.Close Connection
-    [Return]    ${stdout}    ${stderr}    ${rc}
+    RETURN    ${stdout}    ${stderr}    ${rc}
 
 Start Remote Command
     [Documentation]    SSH into a remote host and execute a command on the bare host or in a container.
@@ -1457,7 +1457,7 @@
     ...    ${src['ip']}    ${src['user']}    ${src['pass']}    ${src['container_type']}    ${src['container_name']}
     Should Be Equal As Integers    ${rc}    0
     ${object}=    Evaluate    json.loads(r'''${output}''')    json
-    [Return]    ${object}
+    RETURN    ${object}
 
 Run Iperf Test Client for MCAST
     [Arguments]    ${src}    ${server}    ${args}
@@ -1467,7 +1467,7 @@
     ...    ${src['ip']}    ${src['user']}    ${src['pass']}    ${src['container_type']}    ${src['container_name']}
     Should Be Equal As Integers    ${rc}    0
     ${object}=    Evaluate    json.loads(r'''${output}''')    json
-    [Return]    ${object}
+    RETURN    ${object}
 
 Run Ping In Background
     [Arguments]    ${output_file}    ${dst_ip}    ${iface}    ${ip}    ${user}    ${pass}=${None}
@@ -1497,7 +1497,7 @@
     ${output}=    Login And Run Command On Remote System
     ...    cat ${file}
     ...    ${ip}    ${user}    ${pass}    ${container_type}    ${container_name}    ${prompt}
-    [Return]    ${output}
+    RETURN    ${output}
 
 RestoreONUs
     [Documentation]    Restore all connected ONUs
@@ -1568,7 +1568,7 @@
         Run Keyword If    -1 == ${onu_id}    Append To List    ${onu_list}    ${hosts.src[${INDEX}].onu}
     END
     ${real_num_onus}=    Get Length    ${onu_list}
-    [Return]    ${real_num_onus}
+    RETURN    ${real_num_onus}
 
 Validate Cleanup In ETCD
     [Documentation]    The keyword verifies that device, ports, flows, meters are all cleared in ETCD
@@ -1772,7 +1772,7 @@
         Continue For Loop If    "${type_of_service}"!="${src['service_type']}"
         ${num_of_provisioned_onus_ports}=      Evaluate     ${num_of_provisioned_onus_ports} + 1
     END
-    [Return]    ${num_of_provisioned_onus_ports}
+    RETURN    ${num_of_provisioned_onus_ports}
 
 
 Perform Sanity Test TIM Per OLT
@@ -1889,7 +1889,7 @@
         ...     ${onu_port}     ${of_id}    ${src['c_tag']}
     END
     ${subTotalMcast}=    Remove Duplicates    ${subTotalMcast}
-    [Return]    ${subTotalMcast}
+    RETURN    ${subTotalMcast}
 
 Perform Sanity Test TIM MCAST Per ONU
     [Documentation]  Joins or Leaves Igmp on a BBSim ONU
