diff --git a/libraries/bbf_adapter_utilities.robot b/libraries/bbf_adapter_utilities.robot
index 24fa2c5..73a7a4e 100644
--- a/libraries/bbf_adapter_utilities.robot
+++ b/libraries/bbf_adapter_utilities.robot
@@ -103,7 +103,7 @@
         Append To List    ${bbf_olts_xml}    ${device}[${I}]
     END
     Log     ${bbf_olts_xml}
-    [Return]    ${bbf_olts_xml}
+    RETURN    ${bbf_olts_xml}
 
 Get Olts From XML
     [Documentation]     Extract ALL the OLTs viewed by the BBF-Adapter
@@ -144,7 +144,7 @@
         Append To List    ${bbf_olts_Info}    ${bbf_olt}
     END
     Log     ${bbf_olts_Info}
-    [Return]    ${bbf_olts_Info}
+    RETURN    ${bbf_olts_Info}
 
 Get Onus From XML
     [Documentation]     Extract ALL the ONUs viewed by the BBF-Adapter
@@ -196,7 +196,7 @@
         Append To List    ${bbf_onus_Info}    ${bbf_onu}
     END
     Log     ${bbf_onus_Info}
-    [Return]    ${bbf_onus_Info}
+    RETURN    ${bbf_onus_Info}
 
 Get Interfaces From Onu XML Interfaces
     [Documentation]     Extract ALL the Interfaces of a ONU viewed by the BBF-Adapter
@@ -221,7 +221,7 @@
         Append To List    ${interfaces_Info}    ${onu_interface}
     END
     Log     ${interfaces_Info}
-    [Return]    ${interfaces_Info}
+    RETURN    ${interfaces_Info}
 
 Get All Devices
     [Documentation]     Extract all the Device (OLTs and ONUS) in a unique List of Devices
@@ -229,7 +229,7 @@
     ${onus_bbf}=    Get Onus From XML  ${XML}
     ${olts_bbf}=    Get Olts From XML   ${XML}
     ${all_devices_bbf}=     Combine Lists     ${onus_bbf}      ${olts_bbf}
-    [Return]    ${all_devices_bbf}
+    RETURN    ${all_devices_bbf}
 
 Admin State Translation From IETF to VOLTHA
     [Documentation]     Allow to translate the IETF of a Admin-State to VOLTHA
@@ -244,7 +244,7 @@
     ...    ELSE
     ...    Set Variable     UNKNOWN
     Log     ${voltha_admin_state}
-    [Return]    ${voltha_admin_state}
+    RETURN    ${voltha_admin_state}
 
 Create Device in BBF
     [Arguments]    ${device_id}
@@ -280,7 +280,7 @@
     ...    Set Variable     unlocked
     ...    ELSE
     ...    Set Variable     unknown
-    [Return]    ${ietf_admin_state}
+    RETURN    ${ietf_admin_state}
 
 Oper State Translation From IETF to VOLTHA
     [Documentation]     Allow to translate the IETF of a Oper-State to VOLTHA
@@ -297,7 +297,7 @@
     ...    ELSE
     ...    Set Variable     UNKNOWN
     Log     ${voltha_oper_state}
-    [Return]    ${voltha_oper_state}
+    RETURN    ${voltha_oper_state}
 
 Oper State Translation From VOLTHA to IETF
     [Documentation]     Allow to translate the VOLTHA of a Oper-State to IETF Standard
@@ -314,20 +314,20 @@
     ...    ELSE
     ...    Set Variable     unknown
     Log     ${ietf_oper_state}
-    [Return]    ${ietf_oper_state}
+    RETURN    ${ietf_oper_state}
 
 Connect State Translation From IETF to VOLTHA
     [Documentation]     Allow to translate the IETF of a Connect-State to VOLTHA
     [Arguments]     ${bbf_connect_state}
     #Only REACHABLE because we don't know the IETF status
     ${voltha_connect_state}=   Set Variable     REACHABLE
-    [Return]    ${voltha_connect_state}
+    RETURN    ${voltha_connect_state}
 
 Connect State Translation From VOLTHA to IETF
     [Documentation]     Allow to translate the VOLTHA of a Connect-State to IETF Standard
     [Arguments]     ${voltha_connect_state}
     ${bbf_connect_state}=   Set Variable     unknown
-    [Return]    ${bbf_connect_state}
+    RETURN    ${bbf_connect_state}
 
 Validate Onu in BBF
     [Documentation]    Validate an ONU in BBF and its states
@@ -493,7 +493,7 @@
         ${Device_ID}=   Set Variable    ${all_devices_bbf}[${I}][name]
         Log     ${Device_ID}
     END
-    [Return]    ${Device_ID}
+    RETURN    ${Device_ID}
 
 Correct representation check VOLTHA-IETF
     [Documentation]     Check if all the information the VOLTHA have about a device
diff --git a/libraries/bbsim.robot b/libraries/bbsim.robot
index 634f2aa..318490b 100755
--- a/libraries/bbsim.robot
+++ b/libraries/bbsim.robot
@@ -98,7 +98,7 @@
     ...    bbsimctl onu list | awk 'NR>1 {print $3}'
     @{onuList}=    Split To Lines    ${onus}
     Should Be Equal as Integers    ${rc}    0
-    [Return]    ${onuList}
+    RETURN    ${onuList}
 
 Restart Grpc Server
     [Documentation]  Restart Grpc Server on a BBSim OLT
@@ -123,7 +123,7 @@
     Should Be Equal as Integers    ${rc}    0    Could not access images-count of bbsim
     ${value}=    Fetch From Right    ${output}    :
     ${count}=    Fetch From Left     ${value}    }
-    [Return]    ${count}
+    RETURN    ${count}
 
 Restart And Check BBSIM
     [Documentation]    This keyword restarts bbsim and waits for it to come up again
@@ -145,7 +145,7 @@
     ${bbsim_svc}    ${webserver_port}=    Split String    ${SvcAndPort}    :    1
     ${svc_return}    Set Variable If    '${bbsim_svc}'!='${EMPTY}'    ${bbsim_svc}    ${BBSIM_INSTANCE}
     ${port_return}   Set Variable If    '${webserver_port}'!='${EMPTY}'    ${webserver_port}    ${BBSIM_WEBSERVER_PORT}
-    [Return]    ${svc_return}    ${port_return}
+    RETURN    ${svc_return}    ${port_return}
 
 # keywords regarding OMCC message version
 
@@ -175,7 +175,7 @@
     END
     Should Be True    ${match}    Unable to read OMCC Version
     ${is_extended}=    Is OMCC Extended Version    ${omcc_version}
-    [return]    ${omcc_version}    ${is_extended}
+    RETURN    ${omcc_version}    ${is_extended}
 
 Is OMCC Extended Version
     [Documentation]    Checks passed value and return False (baseline) or True (extended)
@@ -185,7 +185,7 @@
     ${is_extended}=    Set Variable If    '${omcc_version}'=='150'    True
     ...      '${omcc_version}'>='176' and '${omcc_version}'<='180'    True
     ...                                                               False
-    [return]    ${is_extended}
+    RETURN    ${is_extended}
 
 # Keywords regarding restart BBSIM by Helm Charts
 
diff --git a/libraries/dmi-basics.robot b/libraries/dmi-basics.robot
index ec8c546..dd994f3 100755
--- a/libraries/dmi-basics.robot
+++ b/libraries/dmi-basics.robot
@@ -43,7 +43,7 @@
         ${name}=    Get From Dictionary    ${device}    name
         Append To List  ${name_active_olts}     ${name}
     END
-    [Return]    ${name_active_olts}
+    RETURN    ${name_active_olts}
 
 Stop Managing Devices
     [Documentation]     remove given devices from device manager
@@ -70,14 +70,14 @@
     [Arguments]    ${condition_1}   ${condition_2}      ${value}
     ${value}=   Set Variable If  ${condition_1} == ${condition_2}
     ...   ${value+1}      ${value}
-    [Return]    ${value}
+    RETURN    ${value}
 
 Increment If Contained
     [Documentation]  increment given value 'string' contained in 'message'
     [Arguments]    ${message}   ${string}      ${value}
     ${hit}=   Run Keyword And Return Status    Should Contain   ${message}  ${string}
     ${value}=   Increment If Equal  ${hit}  ${True}  ${value}
-    [Return]    ${value}
+    RETURN    ${value}
 
 Start Managing Device
     [Documentation]     add a given device to the device manager
@@ -88,7 +88,7 @@
     ${list}=    Get From List    ${response}    0
     Run Keyword If   ${check_result} == ${True}  Should Be Equal   ${list}[status]    OK_STATUS
     ${uuid}=    Get From Dictionary    ${list}    device_uuid
-    [Return]  ${uuid}
+    RETURN    ${uuid}
 
 Stop Managing Device
     [Documentation]     remove a given device from the device manager
diff --git a/libraries/k8s.robot b/libraries/k8s.robot
index 92e53d1..aa0283e 100755
--- a/libraries/k8s.robot
+++ b/libraries/k8s.robot
@@ -30,7 +30,7 @@
     ${rc}    ${ip}=    Run and Return Rc and Output
     ...    kubectl get svc -n ${namespace} ${name} -o jsonpath={.spec.clusterIP}
     Should Be Equal as Integers    ${rc}    0
-    [Return]    ${ip}
+    RETURN    ${ip}
 
 Lookup Service PORT
     [Arguments]    ${namespace}    ${name}
@@ -38,7 +38,7 @@
     ${rc}    ${port}=    Run and Return Rc and Output
     ...    kubectl get svc -n ${namespace} ${name} -o jsonpath={.spec.ports[0].port}
     Should Be Equal as Integers    ${rc}    0
-    [Return]    ${port}
+    RETURN    ${port}
 
 Restart Pod By Label
     [Arguments]    ${namespace}    ${label_key}   ${label_value}
@@ -64,7 +64,7 @@
     ${rc}    ${output}=    Run and Return Rc and Output
     ...    kubectl exec -i ${exec_pod_name} -n ${namespace} -- ${command}
     Log    ${output}
-    [return]    ${output}
+    RETURN    ${output}
 
 Exec Pod In Kube
     [Arguments]    ${namespace}    ${name}    ${command}    ${grep}=${EMPTY}
@@ -79,7 +79,7 @@
     ${rc}    ${output}=    Run and Return Rc and Output
     ...    kubectl exec -i ${exec_pod_name} -n ${namespace} -- ${command}
     Log    ${output}
-    [return]    ${output}
+    RETURN    ${output}
 
 Exec Pod And Return Output And RC
     [Arguments]    ${namespace}    ${name}    ${command}
@@ -91,7 +91,7 @@
     ${rc}    ${output}=    Run and Return Rc and Output
     ...    kubectl exec -i ${exec_pod_name} -n ${namespace} -- ${command}
     Log    ${output}
-    [return]    ${output}   ${rc}
+    RETURN    ${output}   ${rc}
 
 Exec Pod Separate Stderr
     [Arguments]    ${namespace}    ${name}    ${command}
@@ -107,7 +107,7 @@
     ${stderr}=    Set Variable    ${result.stderr}
     Log    ${stdout}
     Log    ${stderr}
-    [return]    ${stdout}    ${stderr}
+    RETURN    ${stdout}    ${stderr}
 
 Copy File To Pod
     [Arguments]    ${namespace}    ${label}    ${src}    ${dest}
@@ -119,7 +119,7 @@
     ${rc}    ${output}=    Run and Return Rc and Output
     ...    kubectl cp -n ${namespace} ${src} ${exec_pod_name}:${dest}
     Log    ${output}
-    [return]    ${output}
+    RETURN    ${output}
 
 Copy File From Pod
     [Arguments]    ${namespace}    ${label}    ${src}    ${dest}
@@ -131,7 +131,7 @@
     ${rc}    ${output}=     Run and Return Rc and Output
     ...     kubectl cp -n ${namespace} ${exec_pod_name}:${src} ${dest}
     Log    ${output}
-    [return]    ${output}
+    RETURN    ${output}
 
 Apply Kubernetes Resources
     [Arguments]    ${resource_yaml}    ${namespace}
@@ -172,7 +172,7 @@
     ${rc}    ${pod_name}=    Run and Return Rc and Output
         ...    kubectl get pods -n ${namespace} -l ${label_key}=${label_value} --no-headers | awk '{print $1}'
     Should Not Be Empty    ${pod_name}    Pod not found
-    [return]  ${pod_name}
+    RETURN    ${pod_name}
 
 Validate Pods Status By Label
     [Arguments]    ${namespace}    ${label_key}   ${label_value}    ${expectedStatus}
@@ -240,7 +240,7 @@
         ...    AND    Set to Dictionary    ${errorPodDict}    ${podName}    ${errorDict}
     END
     Print to Console    Error Statement logged in the following pods : ${errorPodDict}
-    [Return]    ${errorPodDict}
+    RETURN    ${errorPodDict}
 
 Check For Error Logs in Pod Type1 Given the Log Output
     [Arguments]    ${logOutput}    ${logLevel}=error    ${errorMessage}=${EMPTY}
@@ -257,7 +257,7 @@
     ...    UnexpectedErrorfound    '${is_exec_status}'=='FAIL'    MatchingErrorlogfound
     Log    {linesContainingError}
     &{errorDict}    Create Dictionary    ${returnStatusFlag}    ${linesContainingLog}
-    [Return]    ${errorDict}
+    RETURN    ${errorDict}
 
 Check For Error Logs in Pod Type2 Given the Log Output
     [Arguments]    ${logOutput}    ${logLevel}=warn    ${errorMessage}=${EMPTY}
@@ -275,7 +275,7 @@
     ...    UnexpectedErrorfound    '${is_exec_status}'=='FAIL'    MatchingErrorlogfound
     Log    {linesContainingError}
     &{errorDict}    Create Dictionary    ${returnStatusFlag}    ${linesContainingLog}
-    [Return]    ${errorDict}
+    RETURN    ${errorDict}
 
 Get Container Dictionary
     [Arguments]    ${namespace}
@@ -292,7 +292,7 @@
         &{containerDict}    Set To Dictionary    ${containerDict}    ${pod}    ${containerName}
     END
     Log    ${containerDict}
-    [Return]    ${containerDict}
+    RETURN    ${containerDict}
 
 Validate Error For Given Pods
     [Arguments]    ${datetime}    ${podDict}    ${namespace}
@@ -334,7 +334,7 @@
         ...    Run Keywords    Log    Unexpected Error Log found in pod ${podName}
         ...    AND    Append To List    ${errorPodList}    ${podName}
     END
-    [Return]    ${errorPodList}
+    RETURN    ${errorPodList}
 
 Delete K8s Pod
     [Arguments]    ${namespace}    ${name}
@@ -370,7 +370,7 @@
     ${rc}    ${name}    Run And Return Rc And Output
     ...    kubectl describe rs -n ${namespace} -l ${key}=${value} | grep "Controlled By" | awk -F'/' '{print $2}' | awk 'FNR == 1'
     Should Be Equal as Integers    ${rc}    0
-    [Return]    ${name}
+    RETURN    ${name}
 
 Scale K8s Deployment by Pod Label
     [Arguments]    ${namespace}    ${key}    ${value}    ${count}
@@ -416,7 +416,7 @@
     ...    kubectl get -n ${namespace} deploy/${name} -o jsonpath='{.status.availableReplicas}'
     ${result}=    Run Keyword If    '${count}' == ''    Set Variable    0
     ...    ELSE    Set Variable    ${count}
-    [Return]    ${result}
+    RETURN    ${result}
 
 Check Expected Available Deployment Replicas By Pod Label
     [Arguments]    ${namespace}    ${key}    ${value}    ${expected}
@@ -438,7 +438,7 @@
     Should Be Equal as Integers    ${rc}    0
     ${replicas}=    Run Keyword If    '${value}' == ''    Set Variable    0
     ...    ELSE    Set Variable    ${value}
-    [Return]    ${replicas}
+    RETURN    ${replicas}
 
 Does Deployment Have Replicas
     [Arguments]    ${namespace}    ${name}    ${expected_count}
@@ -477,7 +477,7 @@
     ${cmd}=    Catenate    kubectl -n ${namespace} get pods -l ${key}=${value} -o=json | jq -r
     ...    ".items[].status.containerStatuses[].state.running.startedAt"
     ${output}=    Run   ${cmd}
-    [Return]    ${output}
+    RETURN    ${output}
 
 Check Expected Running Pods Number By Label
     [Arguments]    ${namespace}    ${key}    ${value}    ${number}
@@ -491,21 +491,21 @@
     [Documentation]   Returns the number of pods for a given label
     ${rc}    ${count}    Run and Return Rc and Output
     ...    kubectl -n ${namespace} get pods -l ${key}=${value} -o name | wc -l
-    [Return]    ${count}
+    RETURN    ${count}
 
 Get Pod Restart Count
     [Arguments]    ${namespace}    ${name}
     [Documentation]    Returns the restart count for the given Pod
     ${rc}    ${count}=    Run and Return Rc and Output
     ...    kubectl get pods -n ${namespace} | grep ${name} | awk 'NR==1{print $4}'
-    [Return]    ${count}
+    RETURN    ${count}
 
 Get Pod Age
     [Arguments]    ${namespace}    ${name}
     [Documentation]    Returns the age for the given Pod
     ${rc}    ${age}=    Run and Return Rc and Output
     ...    kubectl get pods -n ${namespace} | grep ${name} | awk 'NR==1{print $5}'
-    [Return]    ${age}
+    RETURN    ${age}
 
 Verify ONOS Pod Restart
     [Arguments]    ${restarted}=True
@@ -546,4 +546,4 @@
     ${app_version}=    Run    ${cmd}
     ${helm_chart}=    Run
     ...    kubectl -n ${namespace} get pods -l ${key}=${value} -o=jsonpath="{.items[*].metadata.labels.\\helm\\.sh\\/chart}"
-    [Return]    ${image}    ${app_version}    ${helm_chart}
+    RETURN    ${image}    ${app_version}    ${helm_chart}
diff --git a/libraries/onos.robot b/libraries/onos.robot
index ff32c76..75f5cc1 100755
--- a/libraries/onos.robot
+++ b/libraries/onos.robot
@@ -52,7 +52,7 @@
     Set Global Variable    ${connection_list}
     # disable highlighting to suppress control sequences
     ${output}=    Execute Single ONOS CLI Command    ${conn_id}    ${disable_highlighter}    do_reconnect=False
-    [Return]    ${conn_list_id}
+    RETURN    ${conn_list_id}
 
 Execute ONOS CLI Command use single connection
     [Documentation]    Execute ONOS CLI Command use an Open Connection
@@ -66,7 +66,7 @@
     ${connection_entry}=    Get From List   ${connection_list}    ${connection_list_id}
     ${output}=    Execute Single ONOS CLI Command    ${connection_entry.conn_id}    ${cmd}
     ...           connection_list_id=${connection_list_id}
-    [Return]    ${output}
+    RETURN    ${output}
 
 Execute Single ONOS CLI Command
     [Documentation]    Executes ONOS CLI Command on current connection
@@ -103,7 +103,7 @@
     ${output}=    Remove String Using Regexp    ${output}    \\s*\\r \\r
     # now we have the plain output text
     Log    Stripped Result_values: ${output}
-    [Return]    ${output}
+    RETURN    ${output}
 
 Get Conn List Id
     [Documentation]    Looks up for an Open Connection with passed host and port in conection list
@@ -119,7 +119,7 @@
         ${connection_list_id}=    Set Variable If    ${match}    ${INDEX}    ${EMPTY}
         Exit For Loop If    ${match}
     END
-    [Return]    ${connection_list_id}
+    RETURN    ${connection_list_id}
 
 Reconnect ONOS SSH Connection
     [Documentation]    Reconnect an SSH Connection
@@ -179,7 +179,7 @@
         Exit For Loop If    ${matched}
     END
     Should Be True    ${matched}    No match for ${serial_number} found
-    [Return]    ${of_id}
+    RETURN    ${of_id}
 
 Get ONU Port in ONOS
     [Arguments]    ${onu_serial_number}    ${olt_of_id}    ${onu_uni_id}=1
@@ -200,7 +200,7 @@
         Exit For Loop If    ${matched}
     END
     Should Be True    ${matched}    No match for ${onu_serial_number} found
-    [Return]    ${onu_port}
+    RETURN    ${onu_port}
 
 Get Onu Ports in ONOS For ALL UNI per ONU
     [Documentation]    Retrieves ONU port(s) for the ONU in ONOS for all UNI-IDs, list of ports will return!
@@ -219,7 +219,7 @@
         ...    ${olt_of_id}    ${uni_id}
         Append To List    ${port_list}    ${onu_port}
     END
-    [return]    ${port_list}
+    RETURN    ${port_list}
 
 Get NNI Port in ONOS
     [Arguments]    ${olt_of_id}
@@ -240,7 +240,7 @@
         Exit For Loop If    ${matched}
     END
     Should Be True    ${matched}    No match for NNI found for ${olt_of_id}
-    [Return]    ${nni_port}
+    RETURN    ${nni_port}
 
 Get FabricSwitch in ONOS
     [Documentation]    Returns of_id of the Fabric Switch in ONOS
@@ -257,7 +257,7 @@
         Exit For Loop If    ${matched}
     END
     Should Be True    ${matched}    No fabric switch found
-    [Return]    ${of_id}
+    RETURN    ${of_id}
 
 Get Master Instace in ONOS
     [Arguments]    ${of_id}
@@ -266,7 +266,7 @@
     ${jsondata}=    To Json    ${resp.content}
     Should Not Be Empty    ${jsondata['nodeId']}    Could not find nodeId of the master instance for device with OF ID ${of_id} in ONOS
     ${master_node}=    Get From Dictionary    ${jsondata}    nodeId
-    [Return]    ${master_node}
+    RETURN    ${master_node}
 
 Verify LLDP Flow Added
     [Arguments]    ${ip}    ${port}    ${olt_of_id}    ${expected_flows}
@@ -625,7 +625,7 @@
     ${downstram_flow_mcast_added}=    Execute ONOS CLI Command use single connection    ${ip}    ${port}
     ...    ${downstream_flow_mcast_added_cmd}
     Should Not Be Empty    ${downstram_flow_mcast_added}    No matching added downstream multicast flow found for ${olt_of_id} in TABLE 0 (ip ${mcastIP})
-    [Return]    ${downstram_flow_mcast_added}
+    RETURN    ${downstram_flow_mcast_added}
 
 Verify Mcast Groups Rules generation
     [Arguments]    ${ip}    ${port}    ${onu_port}      ${groupID}
@@ -645,7 +645,7 @@
     ...    volt-programmed-subscribers ${olt_of_id} ${onu_port}
     ...    volt-programmed-subscribers ${olt_of_id} ${onu_port} | grep ${filter} --color=none
     ${programmed_sub}=    Execute ONOS CLI Command use single connection    ${ip}    ${port}    ${cmd}
-    [Return]    ${programmed_sub}
+    RETURN    ${programmed_sub}
 
 Verify Programmed Subscribers DT FTTB
     [Arguments]    ${ip}    ${port}    ${olt_of_id}    ${onu_port}    ${service}
@@ -678,7 +678,7 @@
     ${ds_bw_profile}=    Run Keyword If    '${programmed_sub_param}' == ' downstreamBandwidthProfile'
     ...    Set Variable    ${programmed_sub_val}
     Log    ${ds_bw_profile}
-    [Return]    ${us_bw_profile}    ${ds_bw_profile}
+    RETURN    ${us_bw_profile}    ${ds_bw_profile}
 
 Get Bandwidth Profile Details
     [Arguments]    ${ip}    ${port}    ${bw_profile}
@@ -712,7 +712,7 @@
     @{bw_val_air}=    Split String    ${bw_val}    }
     ${air}    Run Keyword If    '${bw_param}' == ' assuredInformationRate'
     ...    Set Variable    ${bw_val_air[0]}
-    [Return]    ${cir}    ${cbs}    ${eir}    ${ebs}    ${air}
+    RETURN    ${cir}    ${cbs}    ${eir}    ${ebs}    ${air}
 
 Get Bandwidth Profile Details Rest
     [Arguments]    ${bw_profile_id}
@@ -735,7 +735,7 @@
         Exit For Loop If    ${matched}
     END
     Should Be True    ${matched}    No bandwidth profile found for id: ${bw_profile_id}
-    [Return]    ${cir}    ${cbs}    ${eir}    ${ebs}    ${air}
+    RETURN    ${cir}    ${cbs}    ${eir}    ${ebs}    ${air}
 
 Get Bandwidth Profile Details Ietf Rest
     [Arguments]    ${bw_profile_id}
@@ -758,7 +758,7 @@
         Exit For Loop If    ${matched}
     END
     Should Be True    ${matched}    No bandwidth profile found for id: ${bw_profile_id}
-    [Return]    ${cir}    ${cbs}    ${pir}    ${pbs}    ${gir}
+    RETURN    ${cir}    ${cbs}    ${pir}    ${pbs}    ${gir}
 
 Verify Meters in ONOS Ietf
     [Arguments]    ${ip}    ${port}    ${olt_of_id}    ${onu_port}    ${filter}=${EMPTY}
@@ -981,7 +981,7 @@
         ${matched}=    Set Variable If    '${port}'=='${onu_port}'    True    False
         Exit For Loop If    ${matched}
     END
-    [Return]    ${matched}
+    RETURN    ${matched}
 
 Verify ONU in Groups
     [Arguments]    ${ip_onos}    ${port_onos}    ${deviceId}    ${onu_port}    ${group_exist}=True
@@ -1145,13 +1145,13 @@
     ${count}=    Execute ONOS CLI Command use single connection    ${ip}    ${port}
     ...    ports -e ${of_id} | grep -v SWITCH | grep -v nni | wc -l
     Log    ${count}
-    [Return]    ${count}
+    RETURN    ${count}
 
 List Enabled UNI Ports
     [Documentation]  List all the UNI Ports, the only way we have is to filter out the one called NNI
     ...     Creates a list of dictionaries
     [Arguments]     ${ip}    ${port}   ${of_id}
-    [Return]  [{'port': '16', 'of_id': 'of:00000a0a0a0a0a00'}, {'port': '32', 'of_id': 'of:00000a0a0a0a0a00'}]
+    RETURN    [{'port': '16', 'of_id': 'of:00000a0a0a0a0a00'}, {'port': '32', 'of_id': 'of:00000a0a0a0a0a00'}]
     ${result}=      Create List
     ${out}=    Execute ONOS CLI Command use single connection    ${ip}    ${port}
     ...    ports -e ${of_id} | grep -v SWITCH | grep -v nni
@@ -1178,7 +1178,7 @@
     # NOTE this method is not currently used but it can come useful in the future
     [Documentation]  Returns a list of all OLTs known to ONOS
     [Arguments]  ${ip}    ${port}
-    [Return]  ['of:00000a0a0a0a0a00', 'of:00000a0a0a0a0a01']
+    RETURN    ['of:00000a0a0a0a0a00', 'of:00000a0a0a0a0a01']
     ${result}=      Create List
     ${out}=    Execute ONOS CLI Command use single connection    ${ip}    ${port}
     ...     volt-olts
@@ -1202,7 +1202,7 @@
     ...        ELSE    Set Variable    ${cmd}
     ${cmd}=    Catenate    SEPARATOR=    ${cmd} | wc -l
     ${flows}=  Execute ONOS CLI Command use single connection    ${ip}    ${port}    ${cmd}
-    [return]   ${flows}
+    RETURN    ${flows}
 
 Validate number of flows
     [Documentation]     Validates number of flows in a particular ${state} in ONOS
@@ -1260,7 +1260,7 @@
         Continue For Loop If    -1 != ${port_id}
         Append To List    ${onu_port_list}    ${onu_port}
     END
-    [return]    ${onu_port_list}
+    RETURN    ${onu_port_list}
 
 Get Limiting Bandwidth Details
     [Arguments]    ${bandwidth_profile_name}
@@ -1269,7 +1269,7 @@
     ${cir}    ${cbs}    ${eir}    ${ebs}    ${air}=    Get Bandwidth Profile Details Rest
     ...    ${bandwidth_profile_name}
     ${limiting_BW}=    Evaluate    ${eir}+${cir}+${air}
-    [Return]    ${limiting_BW}
+    RETURN    ${limiting_BW}
 
 Get Limiting Bandwidth Details for Fixed and Committed
     [Arguments]    ${bandwidth_profile_name}
@@ -1278,7 +1278,7 @@
     ${cir}    ${cbs}    ${eir}    ${ebs}    ${air}=    Get Bandwidth Profile Details Rest
     ...    ${bandwidth_profile_name}
     ${limiting_BW}=    Evaluate    ${cir}+${air}
-    [Return]    ${limiting_BW}
+    RETURN    ${limiting_BW}
 
 Validate Deleted Device Cleanup In ONOS
     [Arguments]    ${ip}    ${port}    ${olt_serial_number}    ${maclearning_enabled}=False
@@ -1358,7 +1358,7 @@
     ${rc}    ${output}    Run And Return Rc And Output
     ...    curl --fail -sSL ${url}/onos/v1/applications/${app_name}
     Should Be Equal As Integers    ${rc}    0   Can't read app ${app_name} details from ONOS
-    [Return]    ${output}
+    RETURN    ${output}
 
 Verify UniTag Subscriber
     [Documentation]    Verifies the unitag subscriber is provisioned/un-provisioned
diff --git a/libraries/onu_utilities.robot b/libraries/onu_utilities.robot
index c4c16b3..c76af6f 100755
--- a/libraries/onu_utilities.robot
+++ b/libraries/onu_utilities.robot
@@ -41,7 +41,7 @@
     ${new_timeout}=    Set Variable If    (not ${debugmode}) and (${new_timeout}>300)
     ...    300   ${new_timeout}
     ${new_timeout}=    Catenate    SEPARATOR=    ${new_timeout}    s
-    [Return]    ${new_timeout}
+    RETURN    ${new_timeout}
 
 Get Logical Id of OLT
     [Documentation]    Fills the logical id of OLT(s) if missing
@@ -366,7 +366,7 @@
     ...    ELSE    Set Variable    ${commandget}
     ${result}=    Exec Pod In Kube    ${namespace}    ${podname}    ${commandget}
     log    ${result}
-    [Return]    ${result}
+    RETURN    ${result}
 
 Set Tech Profile
     [Documentation]    This keyword sets the passed TechProfile for the test
@@ -502,7 +502,7 @@
     ...    --print-value-only --hex'
     ${result}=    Exec Pod In Kube    ${namespace}    ${podname}    ${commandget}
     log    ${result}
-    [Return]    ${result}
+    RETURN    ${result}
 
 Validate Tech Profiles and Flows in ETCD Data Per Onu
     [Documentation]    This keyword validates tech profiles and flows data stored in etcd per onu.
@@ -659,7 +659,7 @@
         ...               Should Not Be Equal As Integers    ${prevsetvid}    ${setvid}
     END
     log Many    ${vlan_rules}
-    [Return]    ${vlan_rules}
+    RETURN    ${vlan_rules}
 
 Get ONU Go Adapter ETCD Data
     [Documentation]    This keyword delivers openonu-go-adapter Data stored in etcd
@@ -680,7 +680,7 @@
     ...    ELSE    Set Variable    ${commandget}
     ${result}=    Exec Pod In Kube    ${namespace}    ${podname}    ${commandget}
     log    ${result}
-    [Return]    ${result}
+    RETURN    ${result}
 
 Prepare ONU Go Adapter ETCD Data For Json
     [Documentation]    This keyword prepares openonu-go-adapter Data stored in etcd for converting
@@ -691,7 +691,7 @@
     ${prepresult}=    Strip String    ${prepresult}    mode=right    characters=,
     ${prepresult}=    Set Variable    [${prepresult}]
     log    ${prepresult}
-    [Return]    ${prepresult}
+    RETURN    ${prepresult}
 
 Read Pon Onu Uni String
     [Documentation]    This keyword builds a four digit string using Olt, Pon, Onu and Uni value of given tp-path taken
@@ -704,7 +704,7 @@
     ${uni}=    Get Value Of Tp Path Element    ${tppathlines}    uni
     ${valuesid}=    Set Variable   ${olt}/${pon}/${onu}/${uni}
     log    ${valuesid}
-    [Return]    ${valuesid}
+    RETURN    ${valuesid}
 
 Get Value Of Tp Path Element
     [Documentation]    This keyword delivers numeric value of given tp path element.
@@ -713,7 +713,7 @@
     ${value}=    Remove String    ${value}    ${element}-\{
     ${value}=    Remove String    ${value}    \}
     log    ${value}
-    [Return]    ${value}
+    RETURN    ${value}
 
 Validate Onu Id
     [Documentation]    This keyword validates ONU Id of passed etcd data.
@@ -751,7 +751,7 @@
     log    ${result}
     Run Keyword If    ${validate}    Wait Until Keyword Succeeds    ${timeout}    1s
     ...    Validate Onu Data In Etcd    namespace=${namespace}    nbofetcddata=0    without_pm_data=False
-    [Return]    ${result}
+    RETURN    ${result}
 
 Validate ONOS Flows per OLT
     [Documentation]    This keyword validates onos flows per olt
@@ -860,4 +860,4 @@
     ...    '${state}'=='10' or '${state}'=='rebooting'                              ${state10}
     ...    '${state}'=='11' or '${state}'=='omci-flows-deleted'                     ${state11}
     ...    '${state}'=='12' or '${state}'=='tech-profile-config-delete-success'     ${state12}
-    [Return]    ${admin_state}    ${oper_status}    ${connect_status}    ${onu_state_nb}    ${onu_state}
+    RETURN    ${admin_state}    ${oper_status}    ${connect_status}    ${onu_state_nb}    ${onu_state}
diff --git a/libraries/pm_utilities.robot b/libraries/pm_utilities.robot
index 522a57d..98ee1d2 100755
--- a/libraries/pm_utilities.robot
+++ b/libraries/pm_utilities.robot
@@ -57,7 +57,7 @@
         Prepare Interval and Validation Data    ${metric_dict}    ${onu_device_id}    ${interval_dict}
     END
     log    ${metric_dict}
-    [return]    ${metric_dict}
+    RETURN    ${metric_dict}
 
 Get Available Groupmetrics per Device
     [Documentation]    Delivers avaiable groupmetrics incl. validation data of onu
@@ -72,7 +72,7 @@
         ${dict}=       Create Dictionary    ${Item}=${metric}
         Set To Dictionary    ${groupmetric_dict}    ${Item}=${metric}
     END
-    [return]    ${groupmetric_dict}
+    RETURN    ${groupmetric_dict}
 
 Set Validation Operation
     [Documentation]    Sets the validation operation per metric parameter
@@ -85,7 +85,7 @@
         ...    ELSE IF    '${type}'=='GAUGE'      Set Validation Operation For Gauge      ${item_dict}    ${item}    ${group}
         ...    ELSE       Run Keyword And Continue On Failure    FAIL    Type (${type}) is unknown!
     END
-    [return]    ${item_dict}
+    RETURN    ${item_dict}
 
 Set Validation Operation For Counter
     [Documentation]    Sets the validation operation for a counter
@@ -97,7 +97,7 @@
     ...    ELSE    Create Dictionary    operator=${ge}    operand=0
     ${ValidationOperation}=    Create Dictionary    first=${first}    successor=${successor}
     Set To Dictionary    ${item_dict['${metric}']}  ValidationOperation=${ValidationOperation}
-    [return]    ${item_dict}
+    RETURN    ${item_dict}
 
 Set Validation Operation For Context
     [Documentation]    Sets the validation operation for a context
@@ -107,7 +107,7 @@
     ${successor}=     Create Dictionary    operator=${eq}    operand=previous
     ${ValidationOperation}=    Create Dictionary    first=${first}    successor=${successor}
     Set To Dictionary    ${item_dict['${metric}']}  ValidationOperation=${ValidationOperation}
-    [return]    ${item_dict}
+    RETURN    ${item_dict}
 
 Set Validation Operation For Gauge
     [Documentation]    Sets the validation operation for a gauge
@@ -117,7 +117,7 @@
     ${successor}=     Create Dictionary    operator=${ge}    operand=0
     ${ValidationOperation}=    Create Dictionary    first=${first}    successor=${successor}
     Set To Dictionary    ${item_dict['${metric}']}  ValidationOperation=${ValidationOperation}
-    [return]    ${item_dict}
+    RETURN    ${item_dict}
 
 Set User Validation Operation
     [Documentation]    Sets the user validation operation and value per metric parameter if available
@@ -136,7 +136,7 @@
         ${ValidationOperation}=    Create Dictionary    first=${first}    successor=${successor}
         Set To Dictionary    ${item_dict['${item}']}  ValidationOperation=${ValidationOperation}
     END
-    [return]    ${item_dict}
+    RETURN    ${item_dict}
 
 Set User Precondition Operation for Availability
     [Documentation]    Sets the user precondition operation, value and element per metric parameter if available
@@ -152,7 +152,7 @@
         ${precond}=     Create Dictionary    operator=${operator}    operand=${operand}    element=${element}
         Set To Dictionary    ${item_dict['${item}']}  Precondition=${precond}
     END
-    [return]    ${item_dict}
+    RETURN    ${item_dict}
 
 Prepare Interval and Validation Data
     [Documentation]    Prepares interval and validation data of onu
@@ -181,7 +181,7 @@
         ${dict}=     Create Dictionary    group=${Item}    interval=${val}
         Run Keyword If    '${group}'=='${EMPTY}' or '${group}'=='${Item}'   Append To List    ${group_interval_list}    ${dict}
     END
-    [return]   ${group_interval_list}
+    RETURN    ${group_interval_list}
 
 Get Longest Interval per Onu
     [Documentation]    Delivers longest group interval per device id
@@ -194,7 +194,7 @@
         ...        ELSE    Get From Dictionary    ${METRIC_DICT['${dev_id}']['MetricData']['${Item}']['Intervals']}    default
         ${longest_interval}=    Set Variable If    ${val} > ${longest_interval}    ${val}    ${longest_interval}
     END
-    [return]   ${longest_interval}
+    RETURN    ${longest_interval}
 
 Get Longest Interval
     [Documentation]    Delivers longest interval over all devices
@@ -211,7 +211,7 @@
         ${longest_interval}=    Set Variable If    ${onu_longest_interval} > ${longest_interval}    ${onu_longest_interval}
         ...    ${longest_interval}
     END
-    [return]    ${longest_interval}
+    RETURN    ${longest_interval}
 
 Determine Collection Interval
     [Documentation]    Delivers collection interval over all devices
@@ -219,7 +219,7 @@
     ${longest_interval}=    Get Longest Interval    user=${user}
     ${collect_interval}=    evaluate    (${longest_interval}*2)+6
     ${collect_interval}=    Validate Time Unit    ${collect_interval}
-    [return]    ${collect_interval}
+    RETURN    ${collect_interval}
 
 Set Group Interval per Onu
     [Documentation]    Sets group user interval in METRIC_DICT per device id
@@ -306,7 +306,7 @@
     ${validation_dict}=    Run Keyword If    '${group}' in ${METRIC_DICT['${device_id}']['MetricData']}
     ...    Get From Dictionary    ${METRIC_DICT['${device_id}']['MetricData']['${group}']['GroupMetrics']['${metric_element}']}
     ...    ValidationOperation
-    [return]    ${validation_dict}
+    RETURN    ${validation_dict}
 
 Get Validation Operation All Onu
     [Documentation]    Delivers group validation data in METRIC_DICT all devices for passed metric element
@@ -321,7 +321,7 @@
         ${validation_dict}=   Get Validation Operation per Onu    ${onu_device_id}    ${group}    ${metric_element}
         Set To Dictionary    ${validation_dict_with_device}    ${onu_device_id}=${validation_dict}
     END
-    [return]    ${validation_dict_with_device}
+    RETURN    ${validation_dict_with_device}
 
 #################################################################
 # test keywords
@@ -350,32 +350,32 @@
     Run Keyword If    ${clear}    kafka.Records Clear
     Sleep    ${collect_interval}
     ${Kafka_Records}=    kafka.Records Get    voltha.events
-    [return]    ${Kafka_Records}
+    RETURN    ${Kafka_Records}
 
 Get Title From Metadata
     [Documentation]    Delivers the title of pm data from metadata
     [Arguments]    ${metadata}
     ${title}=    Get From Dictionary    ${metadata}      title
-    [return]    ${title}
+    RETURN    ${title}
 
 Get Device_Id From Metadata
     [Documentation]    Delivers the device-id of pm data from metadata
     [Arguments]    ${metadata}
     ${device_id}=    Get From Dictionary    ${metadata}      device_id
-    [return]    ${device_id}
+    RETURN    ${device_id}
 
 Get Timestamp From Metadata
     [Documentation]    Delivers the device-id of pm data from metadata
     [Arguments]    ${metadata}
     ${timestamp}=    Get From Dictionary    ${metadata}      ts
-    [return]    ${timestamp}
+    RETURN    ${timestamp}
 
 Get Slice Data From Event
     [Documentation]    Delivers the slice data of pm data from event
     [Arguments]    ${event}
     ${kpi_event2}=    Get From Dictionary    ${event}         kpi_event2
     ${slice_data}=    Get From Dictionary    ${kpi_event2}    slice_data
-    [return]    ${slice_data}
+    RETURN    ${slice_data}
 
 Validate Raised Timestamp
     [Documentation]    Validates raisedTs with kpi_event2 ts
@@ -482,7 +482,7 @@
     END
     Run Keyword And Continue On Failure    Run Keyword Unless    ${matched}    FAIL
     ...    Could not find previous metrics for ${title} entity_id ${entity_id} of device ${device_id}!
-    [return]    ${prevSliceIndex}
+    RETURN    ${prevSliceIndex}
 
 Validate Timestamp
     [Documentation]    Validates passed timestamp with timestamp of previous metrics
@@ -507,7 +507,7 @@
     ${validation_operand}=    Get From Dictionary
     ...   ${METRIC_DICT['${dev_id}']['MetricData']['${title}']['GroupMetrics']['${item}']['ValidationOperation']['${w_wo_prev}']}
     ...   operand
-    [return]    ${validation_operator}    ${validation_operand}
+    RETURN    ${validation_operator}    ${validation_operand}
 
 Get Previous Value
     [Documentation]    Delivers the previous value
@@ -519,7 +519,7 @@
     ${slice}=         Get Slice Data From Event    ${event}
     ${metrics}=       Get From Dictionary    ${slice[${prevSliceIndex}]}    metrics
     ${prev_value}=    Get From Dictionary    ${metrics}    ${item}
-    [return]    ${prev_value}
+    RETURN    ${prev_value}
 
 Validate Metrics Data
     [Documentation]    Validates passed metrics
@@ -548,7 +548,7 @@
     ${element}=             Get From Dictionary    ${precond}    element
     ${current_value}=       Get From Dictionary    ${metrics}    ${element}
     ${result}=    utility.validate    ${current_value}    ${operation}    ${validation_value}
-    [return]    ${result}
+    RETURN    ${result}
 
 Validate Completeness of Metrics Data
     [Documentation]    Validates passed metrics of completness
@@ -573,7 +573,7 @@
     ${slice}=    Get Slice Data From Event    ${event}
     ${metadata}=    Get From Dictionary    ${slice[${prevSliceIndex}]}    metadata
     ${timestamp}=    Get Timestamp From Metadata    ${metadata}
-    [return]    ${timestamp}
+    RETURN    ${timestamp}
 
 Set Previous Record
     [Documentation]    Sets the previous record in METRIC_DICT for next validation
@@ -672,4 +672,4 @@
     ${seconds}=    Convert To String    ${seconds}
     ${seconds}=    Get Substring    ${seconds}    0    -2
     ${seconds}=    Set Variable If    ${unit}    ${seconds}s    ${seconds}
-    [return]    ${seconds}
+    RETURN    ${seconds}
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
diff --git a/libraries/utils_vgc.robot b/libraries/utils_vgc.robot
index b6ae874..27a309d 100755
--- a/libraries/utils_vgc.robot
+++ b/libraries/utils_vgc.robot
@@ -108,7 +108,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}
@@ -120,7 +120,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
@@ -173,7 +173,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}
@@ -182,7 +182,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 DT
     [Documentation]    This keyword iterate all OLTs and performs Sanity Test Procedure for DT workflow
@@ -413,7 +413,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
@@ -424,7 +424,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
@@ -435,7 +435,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 VGC
@@ -649,7 +649,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 for various commands
@@ -863,14 +863,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}
 
 Execute Remote Command
     [Documentation]    SSH into a remote host and execute a command on the bare host or in a container.
@@ -897,7 +897,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.
@@ -929,7 +929,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}
@@ -939,7 +939,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}
@@ -969,7 +969,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
@@ -1040,7 +1040,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
@@ -1198,4 +1198,4 @@
         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}
diff --git a/libraries/vgc.robot b/libraries/vgc.robot
index 8f116b3..fc6e767 100755
--- a/libraries/vgc.robot
+++ b/libraries/vgc.robot
@@ -62,7 +62,7 @@
         Exit For Loop If    ${matched}
     END
     Should Be True    ${matched}    No match for ${serial_number} found
-    [Return]    ${of_id}
+    RETURN    ${of_id}
 
 Verify meters response
     [Arguments]    ${meter_json_resp}    ${us_cir}    ${us_cbs}
@@ -135,7 +135,7 @@
         Exit For Loop If    ${matched}
     END
     Should Be True    ${matched}    No match for NNI found for ${olt_of_id}
-    [Return]    ${nni_port}
+    RETURN    ${nni_port}
 
 
 
@@ -158,7 +158,7 @@
         Exit For Loop If    ${matched}
     END
     Should Be True    ${matched}    No match for ${onu_serial_number} found
-    [Return]    ${onu_port}
+    RETURN    ${onu_port}
 
 
 
@@ -488,7 +488,7 @@
     ${resp}=    Get Request    VGC   flows/pending
     ${jsondata}=    To Json    ${resp.content}
     ${length}=    Get Length    ${jsondata['flows']}
-    [Return]    ${length}
+    RETURN    ${length}
 
 Get In Port From Flow
     [Documentation]    Fetches the port Record for IN_PORT
@@ -503,7 +503,7 @@
            ${matched}=    Set Variable If    '${type}' == 'IN_PORT'    True    False
            Exit For Loop If    ${matched}
     END
-    [Return]    ${port}
+    RETURN    ${port}
 
 
 
@@ -521,7 +521,7 @@
            ${matched}=    Set Variable If    '${type}' == 'VLAN_VID'    True    False
            Exit For Loop If    ${matched}
     END
-    [Return]    ${vlanid}
+    RETURN    ${vlanid}
 
 
 Get Out Port From Flow
@@ -537,7 +537,7 @@
            ${matched}=    Set Variable If    '${type}' == 'OUTPUT'    True    False
            Exit For Loop If    ${matched}
     END
-    [Return]    ${outport}
+    RETURN    ${outport}
 
 
 Get Subtype From Flow
@@ -553,7 +553,7 @@
            ${matched}=    Set Variable If    '${type}' == 'L2MODIFICATION'   True    False
            Exit For Loop If    ${matched}
     END
-    [Return]    ${subtype}
+    RETURN    ${subtype}
 
 Get Vlan Id From Flow For Fttb
     [Documentation]    Fetch the VLAN id for L2MODIFICATION
@@ -570,13 +570,13 @@
            ${matched}=    Set Variable If    '${type}' == 'L2MODIFICATION' and '${subtype}' == 'VLAN_SET'   True    False
            Exit For Loop If    ${matched}
     END
-    [Return]      ${vlanId}
+    RETURN    ${vlanId}
 
 Get Table Id From Flow
     [Documentation]    Fetch the TableId
     [Arguments]    ${flow}
     ${tableid}=    Get From Dictionary    ${flow}    tableId
-    [Return]    ${tableid}
+    RETURN    ${tableid}
 
 Get Vlan Id From Flow
     [Documentation]    Fetch the VLAN id for L2MODIFICATION
@@ -593,7 +593,7 @@
            ${matched}=    Set Variable If    '${type}' == 'L2MODIFICATION' and '${subtype}' == 'VLAN_ID'   True    False
            Exit For Loop If    ${matched}
     END
-    [Return]      ${vlanId}
+    RETURN    ${vlanId}
 
 Get Subscribers for a Particular Service
     [Documentation]    Filters the subscriber for a particular service
@@ -614,7 +614,7 @@
         Exit For Loop If    ${matched}
     END
     Should Be True    ${matched}    No matching subscriber for OLT
-    [Return]    ${subscriber_list}
+    RETURN    ${subscriber_list}
 
 Get Programmed Subscribers
     [Arguments]    ${olt_of_id}    ${onu_port}    ${filter}=${EMPTY}
@@ -623,7 +623,7 @@
     ${programmed_sub_json_resp}=    To Json   ${programmed_sub.content}
     ${filtered_subscriber_list}=    Get Subscribers for a Particular Service    ${olt_of_id}    ${programmed_sub_json_resp}
     ...    ${filter}
-    [Return]    ${filtered_subscriber_list}
+    RETURN    ${filtered_subscriber_list}
 
 Verify Programmed Subscribers DT FTTB
     [Arguments]    ${olt_of_id}    ${onu_port}    ${service}
@@ -758,17 +758,16 @@
      ...    ${meter_json_resp}  3
      ${matched}=    Set Variable If    '${rate}' == '${gir}' and '${burst_size}' == '0'  True    False
      Should Be True    ${matched}
-     [Return]    ${matched}
+     RETURN    ${matched}
 
 Validate Guarenteed Information Rate For FTTB
     [Documentation]    Validate gir for both upstream and downstream meters
     [Arguments]    ${gir}    ${meter_json_resp}
     ${burst_size}=    Get From Dictionary    ${meter_json_resp['bands'][2]}    burstSize
     ${rate}=    Get From Dictionary    ${meter_json_resp['bands'][2]}    rate
-#    ${matched}=    Set Variable If    '${rate}' == '${gir}' and '${burst_size}' == '0'  True    False
-    ${matched}=    Evaluate    ${rate} == ${gir} and ${burst_size} == 0
-#    Should Be True    ${matched}
-    [Return]    ${matched}
+    ${matched}=    Set Variable If    '${rate}' == '${gir}' and '${burst_size}' == '0'  True    False
+    Should Be True    ${matched}
+    RETURN    ${matched}
 
 Get Bandwidth Profile Details Ietf Rest
     [Arguments]    ${bw_profile_id}
@@ -787,7 +786,7 @@
     ${cbs}=    Get From Dictionary    ${jsondata}    cbs
     ${gir}=    Get From Dictionary    ${jsondata}    gir
     Should Be True    ${matched}    No bandwidth profile found for id: ${bw_profile_id}
-    [Return]    ${cir}    ${cbs}    ${pir}    ${pbs}    ${gir}
+    RETURN    ${cir}    ${cbs}    ${pir}    ${pbs}    ${gir}
 
 
 Get Upstream and Downstream Bandwidth Profile Name
@@ -805,7 +804,7 @@
         ${ds_bw_profile}=    Get From Dictionary    ${tagInfo_id}    downstreamBandwidthProfile
         Log    ${ds_bw_profile}
     END
-    [Return]    ${us_bw_profile}    ${ds_bw_profile}
+    RETURN    ${us_bw_profile}    ${ds_bw_profile}
 
 Verify Subscriber Access Flows Added Count DT
     [Arguments]    ${ip}    ${port}    ${olt_of_id}    ${expected_flows}
@@ -828,7 +827,7 @@
          ${burst_size}=    Get From Dictionary    ${value}    burstSize
          ${rate}=        Get From Dictionary    ${value}    rate
     END
-    [Return]    ${rate}    ${burst_size}
+    RETURN    ${rate}    ${burst_size}
 
 Delete Subscribers And BW Profile In VGC
     [Documentation]    Delete Subscribers and bw profile  In VGC
diff --git a/libraries/voltctl.robot b/libraries/voltctl.robot
index 352fe21..ac4fc1b 100755
--- a/libraries/voltctl.robot
+++ b/libraries/voltctl.robot
@@ -46,7 +46,7 @@
     ...    voltctl -c ${VOLTCTL_CONFIG} device create -t ${type} -H ${ip}:${port}
     Log     ${device_id}
     Should Be Equal As Integers    ${rc}    0   Failed to Create Device beause of ${device_id}
-    [Return]    ${device_id}
+    RETURN    ${device_id}
 
 Enable Device
     [Arguments]    ${device_id}
@@ -66,7 +66,7 @@
     [Arguments]    ${device_id}
     [Documentation]    Deletes a device in VOLTHA
     ${rc}    ${output}=    Run and Return Rc and Output
-    ...    voltctl -c ${VOLTCTL_CONFIG} device delete ${device_id}
+    ...    voltctl -c ${VOLTCTL_CONFIG} device delete ${device_id} --force
     Should Be Equal As Integers    ${rc}    0   Failed to Delete Device beause of ${output}
 
 Reboot Device
@@ -115,7 +115,7 @@
     ${rc}    ${output}=    Run and Return Rc and Output
     ...    voltctl -c ${VOLTCTL_CONFIG} device flows ${device_id} -m ${voltctlGrpcLimit}
     Should Be Equal As Integers    ${rc}    0   Could not get flows for device ${device_id}
-    [Return]    ${output}
+    RETURN    ${output}
 
 Get Logical Device Output from Voltha
     [Arguments]    ${device_id}
@@ -153,7 +153,7 @@
     ...    voltctl -c ${VOLTCTL_CONFIG} device list -m ${voltctlGrpcLimit} -f Type=brcm_openomci_onu -q
     Should Be Equal as Integers    ${rc}    0       Could not get ONOs device list
     @{onuDevList}=    Split To Lines    ${onus}
-    [Return]    ${onuDevList}
+    RETURN    ${onuDevList}
 
 Get Device List from Voltha by type
     [Documentation]    Gets Device List Output from Voltha applying filtering by device type
@@ -477,7 +477,7 @@
     [Arguments]    ${dev_id}
     ${rc}    ${output}=    Run and Return Rc and Output
     ...    voltctl -c ${VOLTCTL_CONFIG} device onuimage list ${dev_id}
-    [return]    ${rc}    ${output}
+    RETURN    ${rc}    ${output}
 
 Compare Lists
     [Documentation]
@@ -490,7 +490,7 @@
         ${onu_id}=    Get Index From List    ${ListCompare}   ${sn}
         Run Keyword If    -1 != ${onu_id}    Append To List    ${list}    ${sn}
     END
-    [Return]    ${list}
+    RETURN    ${list}
 
 Validate Logical Device
     [Documentation]    Validate Logical Device is listed
@@ -510,7 +510,7 @@
     Should Be Equal    '${rootdev}'    '${olt_device_id}'    Root Device does not match ${olt_device_id}    values=False
     Should Be Equal    '${sn}'    '${BBSIM_OLT_SN}'    Logical Device ${sn} does not match ${BBSIM_OLT_SN}
     ...    values=False
-    [Return]    ${devid}
+    RETURN    ${devid}
 
 Validate Logical Device Ports
     [Arguments]    ${logical_device_id}
@@ -553,7 +553,7 @@
         Run Keyword If    '${type}'=='ETHERNET_UNI' and '${adminstate}'=='ENABLED' and '${operstate}'=='ACTIVE'
         ...    Append To List    ${onu_uni_list}    ${portno}
     END
-    [Return]    ${onu_uni_list}
+    RETURN    ${onu_uni_list}
 
 Retrieve OLT PON Ports
     [Arguments]    ${olt_device_id}
@@ -574,7 +574,7 @@
         Run Keyword If    '${type}' == 'PON_OLT' and ${len_peers} > 0
         ...    Append To List    ${olt_pon_list}    ${portno}
     END
-    [Return]    ${olt_pon_list}
+    RETURN    ${olt_pon_list}
 
 Retrieve Peer List From OLT PON Port
     [Arguments]    ${olt_device_id}    ${pon_port}    ${expected_num_peers}=0
@@ -604,7 +604,7 @@
         ${peer_id}=    Get From Dictionary    ${value}    deviceId
         Append To List    ${olt_peer_list}    ${peer_id}
     END
-    [Return]    ${olt_peer_list}
+    RETURN    ${olt_peer_list}
 
 Validate OLT PON Port Status
     [Arguments]    ${olt_device_id}    ${pon_port}    ${admin_state}    ${oper_status}
@@ -729,7 +729,7 @@
     ...    voltctl -c ${VOLTCTL_CONFIG} device list --filter=SerialNumber=${serial_number} --format='{{.Id}}'
     Should Be Equal As Integers    ${rc}    0   "Error while fetching device list from VOLTHA"
     Log    ${id}
-    [Return]    ${id}
+    RETURN    ${id}
 
 Get Logical Device ID From SN
     [Arguments]    ${serial_number}
@@ -738,7 +738,7 @@
     ...    voltctl -c ${VOLTCTL_CONFIG} logicaldevice list --filter=Desc.SerialNum=${serial_number} --format='{{.Id}}'
     Should Be Equal As Integers    ${rc}    0
     Log    ${id}
-    [Return]    ${id}
+    RETURN    ${id}
 
 Build ONU SN List
     [Arguments]    ${serial_numbers}    ${olt_serial_number}=${EMPTY}    ${num_onus}=${num_all_onus}
@@ -771,7 +771,7 @@
     ...    voltctl -c ${VOLTCTL_CONFIG} device list --filter=Id=${device_id} --format='{{.SerialNumber}}'
     Should Be Equal As Integers    ${rc}    0
     Log    ${sn}
-    [Return]    ${sn}
+    RETURN    ${sn}
 
 Get Parent ID From Device ID
     [Arguments]    ${device_id}
@@ -780,7 +780,7 @@
     ...    voltctl -c ${VOLTCTL_CONFIG} device list --filter=Id=${device_id} --format='{{.ParentId}}'
     Should Be Equal As Integers    ${rc}    0
     Log    ${pid}
-    [Return]    ${pid}
+    RETURN    ${pid}
 
 Validate Device Removed
     [Arguments]    ${serialNumber}
@@ -1064,7 +1064,7 @@
     @{words}=    Split String    ${result}
     ${interval}=    Get From List    ${words}    3
     log    ${interval}
-    [return]    ${interval}
+    RETURN    ${interval}
 
 Read Group Interval From Pmconfig
     [Documentation]    Reads default interval from pm config
@@ -1075,7 +1075,7 @@
     @{words}=    Split String    ${result}
     ${interval}=    Get From List    ${words}    -1
     log    ${interval}
-    [return]    ${interval}
+    RETURN    ${interval}
 
 Set and Validate Default Interval
     [Documentation]    Sets and validates default interval of pm data
@@ -1114,7 +1114,7 @@
         Append To List    ${group_list}    ${group}
         Set To Dictionary    ${interval_dict}    ${group}=${interval}
     END
-    [return]    ${group_list}    ${interval_dict}
+    RETURN    ${group_list}    ${interval_dict}
 
 Read Group Metric List
     [Documentation]    Reads group metric list of given device and group
@@ -1133,7 +1133,7 @@
         ${dict}=       Create Dictionary    ${name}=${subdict}
         Append To List    ${groupmetric_list}    ${dict}
     END
-    [return]    ${groupmetric_list}
+    RETURN    ${groupmetric_list}
 
 Read Group Metric Dict
     [Documentation]    Reads group metric list of given device and group
@@ -1151,7 +1151,7 @@
         ${subdict}=       Create Dictionary    type=${type}    enabled=${enabled}
         Set To Dictionary    ${groupmetric_dict}    ${name}=${subdict}
     END
-    [return]    ${groupmetric_dict}
+    RETURN    ${groupmetric_dict}
 
 # openonu-go-adapter OMCI counter statistics
 Get OMCI counter statistics
@@ -1159,7 +1159,7 @@
     [Arguments]    ${dev_id}
     ${rc}    ${output}=    Run and Return Rc and Output
     ...    voltctl -c ${VOLTCTL_CONFIG} device getextval onu_omci_stats ${dev_id}
-    [return]    ${rc}    ${output}
+    RETURN    ${rc}    ${output}
 
 Get OMCI counter statistics dictionary
     [Documentation]    Delivers the openonu-go-adapter OMCI counter statistics as dictionary
@@ -1177,4 +1177,4 @@
         ${name}=    Remove String    ${name}    :
         Set To Dictionary    ${output_dict}    ${name}    ${value}
     END
-    [return]    ${rc}    ${output_dict}
+    RETURN    ${rc}    ${output_dict}
diff --git a/libraries/voltha.robot b/libraries/voltha.robot
index 39c0fbe..08117d5 100755
--- a/libraries/voltha.robot
+++ b/libraries/voltha.robot
@@ -30,7 +30,7 @@
     ${rc}    ${pod}=    Run and Return Rc and Output
     ...    ../scripts/which_pod_owns_device.sh ${device_id}
     Should Be Equal as Integers    ${rc}    0
-    [Return]    ${pod}
+    RETURN    ${pod}
 
 Lookup Deployment That Owns Device
     [Arguments]    ${device_id}
@@ -38,7 +38,7 @@
     ${rc}    ${deploy}=    Run and Return Rc and Output
     ...    which_deployment_owns_device.sh ${device_id}
     Should Be Equal as Integers    ${rc}    0
-    [Return]    ${deploy}
+    RETURN    ${deploy}
 
 Restart VOLTHA Port Forward
     [Arguments]    ${name}
@@ -64,5 +64,5 @@
     ${kv_store_prefix}=    Get Environment Variable    KVSTOREPREFIX    default=${defaultkvstoreprefix}
     # while Get Environment Variable does not work correctly, a manual correction follows
     ${kv_store_prefix}=    Set Variable If    "${kv_store_prefix}"=="${EMPTY}"    ${defaultkvstoreprefix}    ${kv_store_prefix}
-    [Return]    ${kv_store_prefix}
+    RETURN    ${kv_store_prefix}
 
