diff --git a/libraries/vgc.robot b/libraries/vgc.robot
index b1bee31..8f116b3 100755
--- a/libraries/vgc.robot
+++ b/libraries/vgc.robot
@@ -64,6 +64,18 @@
     Should Be True    ${matched}    No match for ${serial_number} found
     [Return]    ${of_id}
 
+Verify meters response
+    [Arguments]    ${meter_json_resp}    ${us_cir}    ${us_cbs}
+     ${meter_json_Length}    Get Length    ${meter_json_resp['bands']}
+     FOR    ${I}    IN RANGE    0     ${meter_json_Length}
+         ${burst_size}=    Get From Dictionary    ${meter_json_resp['bands'][${I}]}    burstSize
+         ${rate}=        Get From Dictionary    ${meter_json_resp['bands'][${I}]}    rate
+         Log    ${rate}
+         Log    ${burst_size}
+         ${matched}=    Evaluate    '${rate}' == '${us_cir}' and '${burst_size}' == '${us_cbs}'
+         Exit For Loop If    ${matched}
+     END
+    [Return]    ${matched}
 
 
 Validate Deleted Device Cleanup In VGC
@@ -447,13 +459,13 @@
 Send File To VGC
     [Documentation]    Send the content of the file to VGC to selected section of configuration
     ...   using Post Request
-    [Arguments]    ${CONFIG_FILE}    #${section}=${EMPTY}
+    [Arguments]    ${CONFIG_FILE}    ${dest}    #${section}=${EMPTY}
     ${Headers}=    Create Dictionary    Content-Type    application/json
     ${File_Data}=    OperatingSystem.Get File    ${CONFIG_FILE}
     Log    ${Headers}
     Log    ${File_Data}
     ${resp}=    Post Request    VGC
-    ...    network-configurations    headers=${Headers}    data=${File_Data}
+    ...    ${dest}    headers=${Headers}    data=${File_Data}
     Should Be Equal As Strings    ${resp.status_code}    200
 
 Verify No Pending Flows For ONU
@@ -698,74 +710,46 @@
     Log    ${meters}
     ${meter_length}    Get Length    ${meters}
     FOR    ${i}    IN RANGE    ${meter_length}
-        ${id}=    Get From Dictionary    ${meters[${i}]}    id
-        Run Keyword If    '${id}' == '2'    Set Suite Variable    ${meter_json_resp}    ${meters[${i}]}
-    END
-    ${meter_json_Length}    Get Length    ${meter_json_resp['bands']}
-    FOR    ${I}    IN RANGE    0     ${meter_json_Length}
-        ${burst_size}=    Get From Dictionary    ${meter_json_resp['bands'][${I}]}    burstSize
-        ${rate}=        Get From Dictionary    ${meter_json_resp['bands'][${I}]}    rate
-        Log    ${rate}
-        Log    ${burst_size}
-        # for cir & cbs
-        ${matched}=    Set Variable If    '${rate}' == '${us_cir}' and '${burst_size}' == '${us_cbs}'   True    False
-        ${res1}=    Evaluate    '${rate}' == '${us_cir}' and '${burst_size}' == '${us_cbs}'
-        Exit For Loop If    ${matched}
+       ${matched}=    Verify meters response    ${meters[${i}]}    ${us_cir}    ${us_cbs}
+       Exit For Loop If    ${matched}
     END
     Should Be True    ${matched}
     #for pir & pbs
-    FOR    ${I}    IN RANGE    0     3
-        ${burst_size}=    Get From Dictionary    ${meter_json_resp['bands'][${I}]}    burstSize
-        ${rate}=        Get From Dictionary    ${meter_json_resp['bands'][${I}]}    rate
-        ${matched}=    Set Variable If    '${rate}' == '${us_pir}' and '${burst_size}' == '${us_pbs}'   True    False
-        ${res2}=    Evaluate    '${rate}' == '${us_pir}' and '${burst_size}' == '${us_pbs}'
-        Exit For Loop If    ${matched}
+    FOR    ${i}    IN RANGE    ${meter_length}
+       ${matched}=    Verify meters response    ${meters[${i}]}    ${us_pir}    ${us_pbs}
+       Exit For Loop If    ${matched}
     END
     Should Be True    ${matched}
     #for gir
-    Run Keyword if  ${us_gir} != 0    Validate Guarenteed Information Rate For FTTB    ${us_gir}  ${meter_json_resp}
-    # Get downstream bandwidth profile details
+    FOR    ${i}    IN RANGE    ${meter_length}
+        ${matched}=    Run Keyword if  ${us_gir} != 0    Validate Guarenteed Information Rate For FTTB    ${us_gir}  ${meters[${i}]}
+        Exit For Loop If    ${matched}
+    END
+    Should Be True    ${matched}
     ${ds_cir}    ${ds_cbs}    ${ds_pir}    ${ds_pbs}    ${ds_gir}    Get Bandwidth Profile Details Ietf Rest
     ...    ${ds_bw_profile}
     ${meter}=      Get Request    VGC    meters
     ${meter_json_resp}=    To Json   ${meter.content}
     Log    ${meter_json_resp}
-    Log    ${rate}
-    Log    ${burst_size}
-     ${meters}=    Get From Dictionary    ${meter_json_resp}    meters
-     Log    ${meter_json_resp}
-     Log    ${meters}
-     FOR    ${i}    IN RANGE    2
-         ${id}=    Get From Dictionary    ${meters[${i}]}    id
-         Run Keyword If    '${id}' == '2'    Set Suite Variable    ${meter_json_resp}    ${meters[${i}]}
-     END
-     FOR    ${I}    IN RANGE    0     3
-         ${burst_size}=    Get From Dictionary    ${meter_json_resp['bands'][${I}]}    burstSize
-         ${rate}=        Get From Dictionary    ${meter_json_resp['bands'][${I}]}    rate
-         Log    ${rate}
-         Log    ${burst_size}
-         # for cir & cbs
-         ${matched}=    Set Variable If    '${rate}' == '${ds_cir}' and '${burst_size}' == '${ds_cbs}'   True    False
-         ${res1}=    Evaluate    '${rate}' == '${ds_cir}' and '${burst_size}' == '${ds_cbs}'
-         Exit For Loop If    ${matched}
+    ${meters}=    Get From Dictionary    ${meter_json_resp}    meters
+    Log    ${meter_json_resp}
+    Log    ${meters}
+    FOR    ${i}    IN RANGE    ${meter_length}
+        ${matched}=    Verify meters response    ${meters[${i}]}    ${ds_cir}    ${ds_cbs}
+        Exit For Loop If    ${matched}
     END
     Should Be True    ${matched}
-
     # for cir & cbs
-      FOR    ${I}    IN RANGE    0     3
-          ${burst_size}=    Get From Dictionary    ${meter_json_resp['bands'][${I}]}    burstSize
-          ${rate}=        Get From Dictionary    ${meter_json_resp['bands'][${I}]}    rate
-          Log    ${rate}
-          Log    ${burst_size}
-          ${matched}=    Set Variable If    '${rate}' == '${ds_cir}' and '${burst_size}' == '${ds_cbs}'   True    False
-          ${res1}=    Evaluate    '${rate}' == '${ds_pir}' and '${burst_size}' == '${ds_pbs}'
-          Exit For Loop If    ${matched}
-     END
-     Should Be True    ${matched}
-    #for pir & pbs
-    #for gir
-    Run Keyword If    ${ds_gir} != 0
-    ...    Validate Guarenteed Information Rate For FTTB    ${ds_gir}  ${meter_json_resp}
+    FOR    ${i}    IN RANGE    ${meter_length}
+        ${matched}=    Verify meters response    ${meters[${i}]}    ${ds_pir}    ${ds_pbs}
+        Exit For Loop If    ${matched}
+    END
+    Should Be True    ${matched}
+    FOR    ${i}    IN RANGE    ${meter_length}
+        ${matched}=    Run Keyword if  ${us_gir} != 0    Validate Guarenteed Information Rate For FTTB    ${ds_gir}  ${meters[${i}]}
+        Exit For Loop If    ${matched}
+    END
+    Should Be True    ${matched}
 
 Validate Guarenteed Information Rate
      [Documentation]    Validate gir for both upstream and downstream meters
@@ -781,8 +765,9 @@
     [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
-    Should Be True    ${matched}
+#    ${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}
 
 Get Bandwidth Profile Details Ietf Rest
