diff --git a/scripts/add_flow.py b/scripts/add_flow.py
deleted file mode 100755
index 3066936..0000000
--- a/scripts/add_flow.py
+++ /dev/null
@@ -1,638 +0,0 @@
-#! /usr/bin/env python
-# -*- Mode: python; py-indent-offset: 4; tab-width: 8; indent-tabs-mode: t; -*-
-
-import copy
-import pprint
-import os
-import sys
-import subprocess
-import json
-import argparse
-import io
-import time
-
-from flask import Flask, json, Response, render_template, make_response, request
-
-#
-# curl http://127.0.0.1:8080/wm/onos/topology/route/00:00:00:00:00:00:0a:01/1/00:00:00:00:00:00:0a:04/1/json
-#
-
-## Global Var ##
-ControllerIP = "127.0.0.1"
-ControllerPort = 8080
-MonitoringEnabled = False
-MonitoringByOnos = False
-ReadFromFile = ""
-
-DEBUG=0
-pp = pprint.PrettyPrinter(indent=4)
-
-app = Flask(__name__)
-
-## Worker Functions ##
-def log_error(txt):
-  print '%s' % (txt)
-
-def debug(txt):
-  if DEBUG:
-    print '%s' % (txt)
-
-# @app.route("/wm/onos/topology/route/<srcdpid>/<srcport>/<destdpid>/<destport>/json")
-#
-# Sample output:
-# {'dstPort': {'port': {'value': 0}, 'dpid': {'value': '00:00:00:00:00:00:00:02'}}, 'srcPort': {'port': {'value': 0}, 'dpid': {'value': '00:00:00:00:00:00:00:01'}}, 'flowEntries': [{'outPort': {'value': 1}, 'flowEntryErrorState': None, 'flowEntryMatch': None, 'flowEntryActions': None, 'inPort': {'value': 0}, 'flowEntryId': None, 'flowEntryUserState': 'FE_USER_UNKNOWN', 'dpid': {'value': '00:00:00:00:00:00:00:01'}, 'flowEntrySwitchState': 'FE_SWITCH_UNKNOWN'}, {'outPort': {'value': 0}, 'flowEntryErrorState': None, 'flowEntryMatch': None, 'flowEntryActions': None, 'inPort': {'value': 9}, 'flowEntryId': None, 'flowEntryUserState': 'FE_USER_UNKNOWN', 'dpid': {'value': '00:00:00:00:00:00:00:02'}, 'flowEntrySwitchState': 'FE_SWITCH_UNKNOWN'}]}
-#
-def shortest_path(v1, p1, v2, p2):
-  try:
-    command = "curl -s http://%s:%s/wm/onos/topology/route/%s/%s/%s/%s/json" % (ControllerIP, ControllerPort, v1, p1, v2, p2)
-    debug("shortest_path %s" % command)
-    parsedResult = []
-
-    result = os.popen(command).read()
-    debug("result %s" % result)
-    if len(result) == 0:
-      log_error("No Path found from %s/%s to %s/%s" % (v1, p1, v2, p2))
-    else:
-      parsedResult = json.loads(result)
-      debug("parsed %s" % parsedResult)
-
-  except:
-    log_error("Controller IF has issue: No Path found from %s/%s to %s/%s" % (v1, p1, v2, p2))
-
-  return parsedResult
-
-def print_data_path(data_path):
-  if len(data_path) == 0:
-    return
-
-  srcSwitch = data_path['srcPort']['dpid']['value'];
-  srcPort = data_path['srcPort']['port']['value'];
-  dstSwitch = data_path['dstPort']['dpid']['value'];
-  dstPort = data_path['dstPort']['port']['value'];
-
-  print "DataPath: (src = %s/%s dst = %s/%s)" % (srcSwitch, srcPort, dstSwitch, dstPort);
-
-  for f in data_path['flowEntries']:
-    inPort = f['inPort']['value'];
-    outPort = f['outPort']['value'];
-    dpid = f['dpid']['value']
-    print "  FlowEntry: (%s, %s, %s)" % (inPort, dpid, outPort)
-
-def add_flow_path(flow_path):
-  flow_path_json = json.dumps(flow_path)
-
-  try:
-    command = "curl -s -H 'Content-Type: application/json' -d '%s' http://%s:%s/wm/onos/flows/add/json" % (flow_path_json, ControllerIP, ControllerPort)
-    debug("add_flow_path %s" % command)
-    result = os.popen(command).read()
-    debug("result %s" % result)
-    # parsedResult = json.loads(result)
-    # debug("parsed %s" % parsedResult)
-  except:
-    log_error("Controller IF has issue")
-    exit(1)
-
-def add_shortest_path_flow(flow_path):
-  flow_path_json = json.dumps(flow_path)
-
-  try:
-    command = "curl -s -H 'Content-Type: application/json' -d '%s' http://%s:%s/wm/onos/flows/add/json" % (flow_path_json, ControllerIP, ControllerPort)
-    debug("add_shortest_path_flow %s" % command)
-    result = os.popen(command).read()
-    debug("result %s" % result)
-    # parsedResult = json.loads(result)
-    # debug("parsed %s" % parsedResult)
-  except:
-    log_error("Controller IF has issue")
-    exit(1)
-
-def delete_flow_path(flow_id):
-  command = "curl -s \"http://%s:%s/wm/onos/flows/delete/%s/json\"" % (ControllerIP, ControllerPort, flow_id)
-  debug("delete_flow_path %s" % command)
-  result = os.popen(command).read()
-  debug("result %s" % result)
-  # parsedResult = json.loads(result)
-  # debug("parsed %s" % parsedResult)
-
-def extract_flow_args(my_args):
-  # Check the arguments
-  if len(my_args) < 6:
-    log_error(usage_msg)
-    exit(1)
-
-  # Extract the mandatory arguments
-  my_flow_id = my_args[0]
-  my_installer_id = my_args[1]
-  my_src_dpid = my_args[2]
-  my_src_port = my_args[3]
-  my_dst_dpid = my_args[4]
-  my_dst_port = my_args[5]
-
-  #
-  # Extract the "flowPathFlags", "idleTimeout", "hardTimeout", "priority",
-  # "match" and "action" arguments.
-  #
-  flowPathFlags = 0L
-  idleTimeout = 0
-  hardTimeout = 0
-  priority = 32768
-  match = {}
-  matchInPortEnabled = True		# NOTE: Enabled by default
-  actions = []
-  actionOutputEnabled = True		# NOTE: Enabled by default
-  idx = 6
-  while idx < len(my_args):
-    action = {}
-    arg1 = my_args[idx]
-    idx = idx + 1
-    # Extract the second argument
-    if idx >= len(my_args):
-      error_arg = "ERROR: Missing or invalid '" + arg1 + "' argument"
-      log_error(error_arg)
-      log_error(usage_msg)
-      exit(1)
-    arg2 = my_args[idx]
-    idx = idx + 1
-
-    if arg1 == "flowPathFlags":
-      if "DISCARD_FIRST_HOP_ENTRY" in arg2:
-	flowPathFlags = flowPathFlags + 0x1
-      if "KEEP_ONLY_FIRST_HOP_ENTRY" in arg2:
-	flowPathFlags = flowPathFlags + 0x2
-    elif arg1 == "idleTimeout":
-     idleTimeout = arg2
-    elif arg1 == "hardTimeout":
-     hardTimeout = arg2
-    elif arg1 == "priority":
-     priority = arg2
-    elif arg1 == "matchInPort":
-      # Just mark whether inPort matching is enabled
-      matchInPortEnabled = arg2 in ['True', 'true']
-      # inPort = {}
-      # inPort['value'] = int(arg2, 0)
-      # match['inPort'] = inPort
-      ## match['matchInPort'] = True
-    elif arg1 == "matchSrcMac":
-      srcMac = {}
-      srcMac['value'] = arg2
-      match['srcMac'] = srcMac
-      # match['matchSrcMac'] = True
-    elif arg1 == "matchDstMac":
-      dstMac = {}
-      dstMac['value'] = arg2
-      match['dstMac'] = dstMac
-      # match['matchDstMac'] = True
-    elif arg1 == "matchEthernetFrameType":
-      match['ethernetFrameType'] = int(arg2, 0)
-      # match['matchEthernetFrameType'] = True
-    elif arg1 == "matchVlanId":
-      match['vlanId'] = int(arg2, 0)
-      # match['matchVlanId'] = True
-    elif arg1 == "matchVlanPriority":
-      match['vlanPriority'] = int(arg2, 0)
-      # match['matchVlanPriority'] = True
-    elif arg1 == "matchSrcIPv4Net":
-      srcIPv4Net = {}
-      srcIPv4Net['value'] = arg2
-      match['srcIPv4Net'] = srcIPv4Net
-      # match['matchSrcIPv4Net'] = True
-    elif arg1 == "matchDstIPv4Net":
-      dstIPv4Net = {}
-      dstIPv4Net['value'] = arg2
-      match['dstIPv4Net'] = dstIPv4Net
-      # match['matchDstIPv4Net'] = True
-    elif arg1 == "matchIpProto":
-      match['ipProto'] = int(arg2, 0)
-      # match['matchIpProto'] = True
-    elif arg1 == "matchIpToS":
-      match['ipToS'] = int(arg2, 0)
-      # match['matchIpToS'] = True
-    elif arg1 == "matchSrcTcpUdpPort":
-      match['srcTcpUdpPort'] = int(arg2, 0)
-      # match['matchSrcTcpUdpPort'] = True
-    elif arg1 == "matchDstTcpUdpPort":
-      match['dstTcpUdpPort'] = int(arg2, 0)
-      # match['matchDstTcpUdpPort'] = True
-    elif arg1 == "actionOutput":
-      # Mark whether ACTION_OUTPUT action is enabled
-      actionOutputEnabled = arg2 in ['True', 'true']
-      # If ACTION_OUTPUT is explicitly enabled, add an entry with a fake
-      # port number. We need this entry to preserve the action ordering.
-      if actionOutputEnabled == True:
-        actionOutput = {}
-        outPort = {}
-        outPort['value'] = 0xffff
-        actionOutput['port'] = outPort
-        actionOutput['maxLen'] = 0
-        action['actionOutput'] = actionOutput
-        # action['actionType'] = 'ACTION_OUTPUT'
-        actions.append(action)
-      #
-    elif arg1 == "actionSetVlanId":
-      vlanId = {}
-      vlanId['vlanId'] = int(arg2, 0)
-      action['actionSetVlanId'] = vlanId
-      # action['actionType'] = 'ACTION_SET_VLAN_VID'
-      actions.append(copy.deepcopy(action))
-    elif arg1 == "actionSetVlanPriority":
-      vlanPriority = {}
-      vlanPriority['vlanPriority'] = int(arg2, 0)
-      action['actionSetVlanPriority'] = vlanPriority
-      # action['actionType'] = 'ACTION_SET_VLAN_PCP'
-      actions.append(copy.deepcopy(action))
-    elif arg1 == "actionStripVlan":
-      stripVlan = {}
-      stripVlan['stripVlan'] = arg2 in ['True', 'true']
-      action['actionStripVlan'] = stripVlan
-      # action['actionType'] = 'ACTION_STRIP_VLAN'
-      actions.append(copy.deepcopy(action))
-    elif arg1 == "actionSetEthernetSrcAddr":
-      ethernetSrcAddr = {}
-      ethernetSrcAddr['value'] = arg2
-      setEthernetSrcAddr = {}
-      setEthernetSrcAddr['addr'] = ethernetSrcAddr
-      action['actionSetEthernetSrcAddr'] = setEthernetSrcAddr
-      # action['actionType'] = 'ACTION_SET_DL_SRC'
-      actions.append(copy.deepcopy(action))
-    elif arg1 == "actionSetEthernetDstAddr":
-      ethernetDstAddr = {}
-      ethernetDstAddr['value'] = arg2
-      setEthernetDstAddr = {}
-      setEthernetDstAddr['addr'] = ethernetDstAddr
-      action['actionSetEthernetDstAddr'] = setEthernetDstAddr
-      # action['actionType'] = 'ACTION_SET_DL_DST'
-      actions.append(copy.deepcopy(action))
-    elif arg1 == "actionSetIPv4SrcAddr":
-      IPv4SrcAddr = {}
-      IPv4SrcAddr['value'] = arg2
-      setIPv4SrcAddr = {}
-      setIPv4SrcAddr['addr'] = IPv4SrcAddr
-      action['actionSetIPv4SrcAddr'] = setIPv4SrcAddr
-      # action['actionType'] = 'ACTION_SET_NW_SRC'
-      actions.append(copy.deepcopy(action))
-    elif arg1 == "actionSetIPv4DstAddr":
-      IPv4DstAddr = {}
-      IPv4DstAddr['value'] = arg2
-      setIPv4DstAddr = {}
-      setIPv4DstAddr['addr'] = IPv4DstAddr
-      action['actionSetIPv4DstAddr'] = setIPv4DstAddr
-      # action['actionType'] = 'ACTION_SET_NW_DST'
-      actions.append(copy.deepcopy(action))
-    elif arg1 == "actionSetIpToS":
-      ipToS = {}
-      ipToS['ipToS'] = int(arg2, 0)
-      action['actionSetIpToS'] = ipToS
-      # action['actionType'] = 'ACTION_SET_NW_TOS'
-      actions.append(copy.deepcopy(action))
-    elif arg1 == "actionSetTcpUdpSrcPort":
-      tcpUdpSrcPort = {}
-      tcpUdpSrcPort['port'] = int(arg2, 0)
-      action['actionSetTcpUdpSrcPort'] = tcpUdpSrcPort
-      # action['actionType'] = 'ACTION_SET_TP_SRC'
-      actions.append(copy.deepcopy(action))
-    elif arg1 == "actionSetTcpUdpDstPort":
-      tcpUdpDstPort = {}
-      tcpUdpDstPort['port'] = int(arg2, 0)
-      action['actionSetTcpUdpDstPort'] = tcpUdpDstPort
-      # action['actionType'] = 'ACTION_SET_TP_DST'
-      actions.append(copy.deepcopy(action))
-    elif arg1 == "actionEnqueue":
-      # TODO: Implement ACTION_ENQUEUE
-      actionEnqueue = {}
-      #   actionEnqueue['queueId'] = int(arg2, 0)
-      #   enqueuePort = {}
-      #   enqueuePort['value'] = int(arg3, 0)
-      #   actionEnqueue['port'] = enqueuePort
-      #   action['actionEnqueue'] = actionEnqueue
-      #   # action['actionType'] = 'ACTION_ENQUEUE'
-      #   actions.append(copy.deepcopy(action))
-      #
-    else:
-      log_error("ERROR: Unknown argument '%s'" % (arg1))
-      log_error(usage_msg)
-      exit(1)
-
-  return {
-    'my_flow_id' : my_flow_id,
-    'my_installer_id' : my_installer_id,
-    'my_src_dpid' : my_src_dpid,
-    'my_src_port' : my_src_port,
-    'my_dst_dpid' : my_dst_dpid,
-    'my_dst_port' : my_dst_port,
-    'flowPathFlags' : flowPathFlags,
-    'idleTimeout' : idleTimeout,
-    'hardTimeout' : hardTimeout,
-    'priority' : priority,
-    'match' : match,
-    'matchInPortEnabled' : matchInPortEnabled,
-    'actions' : actions,
-    'actionOutputEnabled' : actionOutputEnabled
-    }
-
-def compute_data_path(parsed_args):
-
-  my_src_dpid = parsed_args['my_src_dpid']
-  my_src_port = parsed_args['my_src_port']
-  my_dst_dpid = parsed_args['my_dst_dpid']
-  my_dst_port = parsed_args['my_dst_port']
-
-  # Compute the shortest path
-  data_path = shortest_path(my_src_dpid, my_src_port, my_dst_dpid, my_dst_port)
-
-  debug("Data Path: %s" % data_path)
-  return data_path
-
-def compute_flow_path(parsed_args, data_path):
-
-  my_flow_id = parsed_args['my_flow_id']
-  my_installer_id = parsed_args['my_installer_id']
-  myFlowPathFlags = parsed_args['flowPathFlags']
-  myIdleTimeout = parsed_args['idleTimeout']
-  myHardTimeout = parsed_args['hardTimeout']
-  myPriority = parsed_args['priority']
-  match = parsed_args['match']
-  matchInPortEnabled = parsed_args['matchInPortEnabled']
-  actions = parsed_args['actions']
-  actionOutputEnabled = parsed_args['actionOutputEnabled']
-  my_data_path = copy.deepcopy(data_path)
-
-  flow_id = {}
-  flow_id['value'] = my_flow_id
-  installer_id = {}
-  installer_id['value'] = my_installer_id
-  flowPathFlags = {}
-  flowPathFlags['flags'] = myFlowPathFlags
-
-  flowEntryActions = {}
-
-  flow_path = {}
-  flow_path['flowId'] = flow_id
-  flow_path['installerId'] = installer_id
-  # NOTE: The 'flowPathType' might be rewritten later
-  flow_path['flowPathType'] = 'FP_TYPE_EXPLICIT_PATH'
-  flow_path['flowPathUserState'] = 'FP_USER_ADD'
-  flow_path['flowPathFlags'] = flowPathFlags
-  flow_path['idleTimeout'] = myIdleTimeout
-  flow_path['hardTimeout'] = myHardTimeout
-  flow_path['priority'] = myPriority
-
-  if (len(match) > 0):
-    flow_path['flowEntryMatch'] = copy.deepcopy(match)
-
-  #
-  # Add the match conditions to each flow entry
-  #
-  if (len(match) > 0) or matchInPortEnabled:
-    idx = 0
-    while idx < len(my_data_path['flowEntries']):
-      if matchInPortEnabled:
-	inPort = my_data_path['flowEntries'][idx]['inPort']
-	match['inPort'] = copy.deepcopy(inPort)
-	# match['matchInPort'] = True
-      my_data_path['flowEntries'][idx]['flowEntryMatch'] = copy.deepcopy(match)
-      idx = idx + 1
-
-
-  if (len(actions) > 0):
-    flowEntryActions['actions'] = copy.deepcopy(actions)
-    flow_path['flowEntryActions'] = flowEntryActions
-
-  #
-  # Set the actions for each flow entry
-  # NOTE: The actions from the command line are aplied
-  # ONLY to the first flow entry.
-  #
-  # If ACTION_OUTPUT action is enabled, then apply it
-  # to each flow entry.
-  #
-  if (len(actions) > 0) or actionOutputEnabled:
-    idx = 0
-    while idx < len(my_data_path['flowEntries']):
-      if idx > 0:
-	actions = []	# Reset the actions for all but first entry
-      action = {}
-      outPort = my_data_path['flowEntries'][idx]['outPort']
-      actionOutput = {}
-      actionOutput['port'] = copy.deepcopy(outPort)
-      # actionOutput['maxLen'] = 0	# TODO: not used for now
-      action['actionOutput'] = copy.deepcopy(actionOutput)
-      # action['actionType'] = 'ACTION_OUTPUT'
-      actions.append(copy.deepcopy(action))
-      flowEntryActions = {}
-      flowEntryActions['actions'] = copy.deepcopy(actions)
-
-      my_data_path['flowEntries'][idx]['flowEntryActions'] = flowEntryActions
-      idx = idx + 1
-
-  flow_path['dataPath'] = my_data_path
-  debug("Flow Path: %s" % flow_path)
-  return flow_path
-
-def exec_monitoring_by_onos(parsed_args):
-  idx = 0
-  while idx < len(parsed_args):
-    data_path = {}
-    src_dpid = {}
-    src_port = {}
-    dst_dpid = {}
-    dst_port = {}
-    src_switch_port = {}
-    dst_switch_port = {}
-    flow_entries = []
-
-    src_dpid['value'] = parsed_args[idx]['my_src_dpid']
-    src_port['value'] = parsed_args[idx]['my_src_port']
-    dst_dpid['value'] = parsed_args[idx]['my_dst_dpid']
-    dst_port['value'] = parsed_args[idx]['my_dst_port']
-    src_switch_port['dpid'] = src_dpid
-    src_switch_port['port'] = src_port
-    dst_switch_port['dpid'] = dst_dpid
-    dst_switch_port['port'] = dst_port
-
-    data_path['srcPort'] = copy.deepcopy(src_switch_port)
-    data_path['dstPort'] = copy.deepcopy(dst_switch_port)
-    data_path['flowEntries'] = copy.deepcopy(flow_entries)
-
-    #
-    # XXX: Explicitly disable the InPort matching, and
-    # the Output action, because they get in the way
-    # during the compute_flow_path() processing.
-    #
-    parsed_args[idx]['matchInPortEnabled'] = False
-    parsed_args[idx]['actionOutputEnabled'] = False
-
-    flow_path = compute_flow_path(parsed_args[idx], data_path)
-    flow_path['flowPathType'] = 'FP_TYPE_SHORTEST_PATH'
-
-    add_shortest_path_flow(flow_path)
-
-    idx = idx + 1
-
-
-def exec_processing_by_script(parsed_args):
-  #
-  # Initialization
-  #
-  last_data_paths = []
-  idx = 0
-  while idx < len(parsed_args):
-    last_data_path = []
-    last_data_paths.append(copy.deepcopy(last_data_path))
-    idx = idx + 1
-
-  #
-  # Do the work: install and/or periodically monitor each flow
-  #
-  while True:
-    idx = 0
-    while idx < len(parsed_args):
-      last_data_path = last_data_paths[idx]
-      my_flow_id = parsed_args[idx]['my_flow_id']
-      data_path = compute_data_path(parsed_args[idx])
-      if data_path != last_data_path:
-	print_data_path(data_path)
-	if len(last_data_path) > 0:
-	  delete_flow_path(my_flow_id)
-	if len(data_path) > 0:
-	  flow_path = compute_flow_path(parsed_args[idx], data_path)
-	  add_flow_path(flow_path)
-	last_data_paths[idx] = copy.deepcopy(data_path)
-      idx = idx + 1
-
-    if MonitoringEnabled != True:
-      break
-    time.sleep(1)
-
-
-if __name__ == "__main__":
-  usage_msg = "Usage: %s [Flags] <flow-id> <installer-id> <src-dpid> <src-port> <dest-dpid> <dest-port> [Flow Attributes] [Match Conditions] [Actions]\n" % (sys.argv[0])
-  usage_msg = usage_msg + "\n"
-  usage_msg = usage_msg + "    <flow-id>             The Flow ID, or -1 if it should be assigned by ONOS\n"
-  usage_msg = usage_msg + "\n"
-  usage_msg = usage_msg + "    Flags:\n"
-  usage_msg = usage_msg + "        -m [monitorname]  Monitor and maintain the installed shortest path(s)\n"
-  usage_msg = usage_msg + "                          If 'monitorname' is specified and is set to 'ONOS'\n"
-  usage_msg = usage_msg + "                          (case insensitive), then the flow generation and\n"
-  usage_msg = usage_msg + "                          maintanenance is done by ONOS itself.\n"
-  usage_msg = usage_msg + "                          Otherwise, it is done by this script.\n"
-  usage_msg = usage_msg + "        -f <filename>     Read the flow(s) to install from a file\n"
-  usage_msg = usage_msg + "                          File format: one line per flow starting with <flow-id>\n"
-  usage_msg = usage_msg + "\n"
-  usage_msg = usage_msg + "    Flow Attributes:\n"
-  usage_msg = usage_msg + "        flowPathFlags <Flags> (flag names separated by ',')\n"
-  usage_msg = usage_msg + "            Known flags:\n"
-  usage_msg = usage_msg + "            DISCARD_FIRST_HOP_ENTRY    : Discard the first-hop flow entry\n"
-  usage_msg = usage_msg + "            KEEP_ONLY_FIRST_HOP_ENTRY  : Keep only the first-hop flow entry\n"
-  usage_msg = usage_msg + "\n"
-  usage_msg = usage_msg + "        idleTimeout <idleTimeoutInSeconds> (in the [0, 65535] interval;\n"
-  usage_msg = usage_msg + "                                            default to 0: no timeout)\n"
-  usage_msg = usage_msg + "        hardTimeout <hardTimeoutInSeconds> (in the [0, 65535] interval;\n"
-  usage_msg = usage_msg + "                                            default to 0: no timeout)\n"
-  usage_msg = usage_msg + "\n"
-  usage_msg = usage_msg + "        priority <flowPriority> (in the [0, 65535] interval; default to 32768)\n"
-  usage_msg = usage_msg + "\n"
-  usage_msg = usage_msg + "    Match Conditions:\n"
-  usage_msg = usage_msg + "        matchInPort <True|False> (default to True)\n"
-  usage_msg = usage_msg + "        matchSrcMac <source MAC address>\n"
-  usage_msg = usage_msg + "        matchDstMac <destination MAC address>\n"
-  usage_msg = usage_msg + "        matchEthernetFrameType <Ethernet frame type>\n"
-  usage_msg = usage_msg + "        matchVlanId <VLAN ID>\n"
-  usage_msg = usage_msg + "        matchVlanPriority <VLAN priority>\n"
-  usage_msg = usage_msg + "        matchSrcIPv4Net <source IPv4 network address>\n"
-  usage_msg = usage_msg + "        matchDstIPv4Net <destination IPv4 network address>\n"
-  usage_msg = usage_msg + "        matchIpProto <IP protocol>\n"
-  usage_msg = usage_msg + "        matchIpToS <IP ToS> (DSCP field, 6 bits)\n"
-  usage_msg = usage_msg + "        matchSrcTcpUdpPort <source TCP/UDP port>\n"
-  usage_msg = usage_msg + "        matchDstTcpUdpPort <destination TCP/UDP port>\n"
-  usage_msg = usage_msg + "\n"
-  usage_msg = usage_msg + "    Actions:\n"
-  usage_msg = usage_msg + "        actionOutput <True|False> (default to True)\n"
-  usage_msg = usage_msg + "        actionSetVlanId <VLAN ID>\n"
-  usage_msg = usage_msg + "        actionSetVlanPriority <VLAN priority>\n"
-  usage_msg = usage_msg + "        actionStripVlan <True|False>\n"
-  usage_msg = usage_msg + "        actionSetEthernetSrcAddr <source MAC address>\n"
-  usage_msg = usage_msg + "        actionSetEthernetDstAddr <destination MAC address>\n"
-  usage_msg = usage_msg + "        actionSetIPv4SrcAddr <source IPv4 address>\n"
-  usage_msg = usage_msg + "        actionSetIPv4DstAddr <destination IPv4 address>\n"
-  usage_msg = usage_msg + "        actionSetIpToS <IP ToS> (DSCP field, 6 bits)\n"
-  usage_msg = usage_msg + "        actionSetTcpUdpSrcPort <source TCP/UDP port>\n"
-  usage_msg = usage_msg + "        actionSetTcpUdpDstPort <destination TCP/UDP port>\n"
-  usage_msg = usage_msg + "    Actions (not implemented yet):\n"
-  usage_msg = usage_msg + "        actionEnqueue <dummy argument>\n"
-
-  # app.debug = False;
-
-  # Usage info
-  if len(sys.argv) > 1 and (sys.argv[1] == "-h" or sys.argv[1] == "--help"):
-    print(usage_msg)
-    exit(0)
-
-  #
-  # Check the flags
-  #
-  start_argv_index = 1
-  idx = 1
-  while idx < len(sys.argv):
-    arg1 = sys.argv[idx]
-    idx = idx + 1
-    if arg1 == "-m":
-      MonitoringEnabled = True
-      if idx < len(sys.argv):
-	arg2 = sys.argv[idx]
-	if arg2.lower() == "onos":
-	  MonitoringByOnos = True
-	  idx = idx + 1
-      start_argv_index = idx
-    elif arg1 == "-f":
-      if idx >= len(sys.argv):
-	error_arg = "ERROR: Missing or invalid '" + arg1 + "' argument"
-	log_error(error_arg)
-	log_error(usage_msg)
-	exit(1)
-      ReadFromFile = sys.argv[idx]
-      idx = idx + 1
-      start_argv_index = idx
-    else:
-      break;
-
-  #
-  # Read the arguments from a file or from the remaining command line options
-  #
-  my_lines = []
-  if len(ReadFromFile) > 0:
-    f = open(ReadFromFile, "rt")
-    my_line = f.readline()
-    while my_line:
-      if len(my_line.rstrip()) > 0 and my_line[0] != "#":
-	my_token_line = my_line.rstrip().split()
-	my_lines.append(my_token_line)
-      my_line = f.readline()
-  else:
-    my_lines.append(copy.deepcopy(sys.argv[start_argv_index:]))
-
-  #
-  # Initialization
-  #
-  last_data_paths = []
-  parsed_args = []
-  idx = 0
-  while idx < len(my_lines):
-    last_data_path = []
-    last_data_paths.append(copy.deepcopy(last_data_path))
-    #
-    # Parse the flow arguments
-    #
-    my_args = my_lines[idx]
-    parsed_args.append(copy.deepcopy(extract_flow_args(my_args)))
-    # Cleanup leftover state
-    my_flow_id = parsed_args[idx]['my_flow_id']
-    delete_flow_path(my_flow_id)
-
-    idx = idx + 1
-
-  #
-  if MonitoringByOnos == True:
-    exec_monitoring_by_onos(parsed_args)
-  else:
-    exec_processing_by_script(parsed_args)
-
diff --git a/scripts/delete_flow.py b/scripts/delete_flow.py
deleted file mode 100755
index d38e915..0000000
--- a/scripts/delete_flow.py
+++ /dev/null
@@ -1,81 +0,0 @@
-#! /usr/bin/env python
-# -*- Mode: python; py-indent-offset: 4; tab-width: 8; indent-tabs-mode: t; -*-
-
-import pprint
-import os
-import sys
-import subprocess
-import json
-import argparse
-import io
-import time
-
-from flask import Flask, json, Response, render_template, make_response, request
-
-#
-# TODO: remove this! We don't use JSON argument here!
-# curl http://127.0.0.1:8080/wm/onos/flows/delete/{"value":"0xf"}/json'
-#
-
-## Global Var ##
-ControllerIP="127.0.0.1"
-ControllerPort=8080
-
-DEBUG=0
-pp = pprint.PrettyPrinter(indent=4)
-
-app = Flask(__name__)
-
-## Worker Functions ##
-def log_error(txt):
-  print '%s' % (txt)
-
-def debug(txt):
-  if DEBUG:
-    print '%s' % (txt)
-
-# @app.route("/wm/onos/flows/delete/<flow-id>/json")
-def delete_flow_path(flow_id):
-  command = "curl -s \"http://%s:%s/wm/onos/flows/delete/%s/json\"" % (ControllerIP, ControllerPort, flow_id)
-  debug("delete_flow_path %s" % command)
-  result = os.popen(command).read()
-  debug("result %s" % result)
-  # parsedResult = json.loads(result)
-  # debug("parsed %s" % parsedResult)
-
-if __name__ == "__main__":
-  usage_msg = "Delete flow state from the ONOS Network Map and the switches\n"
-  usage_msg = usage_msg + "Usage: %s <begin-flow-id> <end-flow-id>\n" % (sys.argv[0])
-  usage_msg = usage_msg + "       %s <flow-id>\n" % (sys.argv[0])
-  usage_msg = usage_msg + "\n"
-  usage_msg = usage_msg + "    Arguments:\n"
-  usage_msg = usage_msg + "        <begin-flow-id> <end-flow-id>      Delete all flows in the flow ID range\n"
-  usage_msg = usage_msg + "        <flow-id>                          Delete a single flow with the flow ID\n"
-  usage_msg = usage_msg + "        all                                Delete all flows\n"
-
-  # app.debug = False;
-
-  # Usage info
-  if len(sys.argv) > 1 and (sys.argv[1] == "-h" or sys.argv[1] == "--help"):
-    print(usage_msg)
-    exit(0)
-
-  # Check arguments
-  if len(sys.argv) < 2:
-    log_error(usage_msg)
-    exit(1)
-
-  if (sys.argv[1] == "all"):
-    delete_flow_path(sys.argv[1])
-  else:
-    begin_flow_id = int(sys.argv[1], 0)
-    if len(sys.argv) >= 3:
-      end_flow_id = int(sys.argv[2], 0)
-    else:
-      end_flow_id = begin_flow_id
-
-    # Do the work
-    flow_id = begin_flow_id
-    while flow_id <= end_flow_id:
-      delete_flow_path(flow_id)
-      flow_id = flow_id + 1
diff --git a/scripts/flowdef_demo_add.txt b/scripts/flowdef_demo_add.txt
deleted file mode 100644
index 600cd4e..0000000
--- a/scripts/flowdef_demo_add.txt
+++ /dev/null
@@ -1,108 +0,0 @@
-145 ps_73_1 00:00:00:00:00:00:05:02 1 00:00:00:00:00:00:06:02 1 matchSrcMac 00:00:c0:a8:05:02 matchDstMac 00:00:c0:a8:06:02
-146 ps_73_2 00:00:00:00:00:00:06:02 1 00:00:00:00:00:00:05:02 1 matchSrcMac 00:00:c0:a8:06:02 matchDstMac 00:00:c0:a8:05:02
-147 ps_74_1 00:00:00:00:00:00:05:03 1 00:00:00:00:00:00:06:03 1 matchSrcMac 00:00:c0:a8:05:03 matchDstMac 00:00:c0:a8:06:03
-148 ps_74_2 00:00:00:00:00:00:06:03 1 00:00:00:00:00:00:05:03 1 matchSrcMac 00:00:c0:a8:06:03 matchDstMac 00:00:c0:a8:05:03
-149 ps_75_1 00:00:00:00:00:00:05:04 1 00:00:00:00:00:00:06:04 1 matchSrcMac 00:00:c0:a8:05:04 matchDstMac 00:00:c0:a8:06:04
-150 ps_75_2 00:00:00:00:00:00:06:04 1 00:00:00:00:00:00:05:04 1 matchSrcMac 00:00:c0:a8:06:04 matchDstMac 00:00:c0:a8:05:04
-151 ps_76_1 00:00:00:00:00:00:05:05 1 00:00:00:00:00:00:06:05 1 matchSrcMac 00:00:c0:a8:05:05 matchDstMac 00:00:c0:a8:06:05
-152 ps_76_2 00:00:00:00:00:00:06:05 1 00:00:00:00:00:00:05:05 1 matchSrcMac 00:00:c0:a8:06:05 matchDstMac 00:00:c0:a8:05:05
-153 ps_77_1 00:00:00:00:00:00:05:06 1 00:00:00:00:00:00:06:06 1 matchSrcMac 00:00:c0:a8:05:06 matchDstMac 00:00:c0:a8:06:06
-154 ps_77_2 00:00:00:00:00:00:06:06 1 00:00:00:00:00:00:05:06 1 matchSrcMac 00:00:c0:a8:06:06 matchDstMac 00:00:c0:a8:05:06
-155 ps_78_1 00:00:00:00:00:00:05:07 1 00:00:00:00:00:00:06:07 1 matchSrcMac 00:00:c0:a8:05:07 matchDstMac 00:00:c0:a8:06:07
-156 ps_78_2 00:00:00:00:00:00:06:07 1 00:00:00:00:00:00:05:07 1 matchSrcMac 00:00:c0:a8:06:07 matchDstMac 00:00:c0:a8:05:07
-157 ps_79_1 00:00:00:00:00:00:05:08 1 00:00:00:00:00:00:06:08 1 matchSrcMac 00:00:c0:a8:05:08 matchDstMac 00:00:c0:a8:06:08
-158 ps_79_2 00:00:00:00:00:00:06:08 1 00:00:00:00:00:00:05:08 1 matchSrcMac 00:00:c0:a8:06:08 matchDstMac 00:00:c0:a8:05:08
-159 ps_80_1 00:00:00:00:00:00:05:09 1 00:00:00:00:00:00:06:09 1 matchSrcMac 00:00:c0:a8:05:09 matchDstMac 00:00:c0:a8:06:09
-160 ps_80_2 00:00:00:00:00:00:06:09 1 00:00:00:00:00:00:05:09 1 matchSrcMac 00:00:c0:a8:06:09 matchDstMac 00:00:c0:a8:05:09
-161 ps_81_1 00:00:00:00:00:00:05:0a 1 00:00:00:00:00:00:06:0a 1 matchSrcMac 00:00:c0:a8:05:0a matchDstMac 00:00:c0:a8:06:0a
-162 ps_81_2 00:00:00:00:00:00:06:0a 1 00:00:00:00:00:00:05:0a 1 matchSrcMac 00:00:c0:a8:06:0a matchDstMac 00:00:c0:a8:05:0a
-163 ps_82_1 00:00:00:00:00:00:05:02 1 00:00:00:00:00:00:07:02 1 matchSrcMac 00:00:c0:a8:05:02 matchDstMac 00:00:c0:a8:07:02
-164 ps_82_2 00:00:00:00:00:00:07:02 1 00:00:00:00:00:00:05:02 1 matchSrcMac 00:00:c0:a8:07:02 matchDstMac 00:00:c0:a8:05:02
-165 ps_83_1 00:00:00:00:00:00:05:03 1 00:00:00:00:00:00:07:03 1 matchSrcMac 00:00:c0:a8:05:03 matchDstMac 00:00:c0:a8:07:03
-166 ps_83_2 00:00:00:00:00:00:07:03 1 00:00:00:00:00:00:05:03 1 matchSrcMac 00:00:c0:a8:07:03 matchDstMac 00:00:c0:a8:05:03
-167 ps_84_1 00:00:00:00:00:00:05:04 1 00:00:00:00:00:00:07:04 1 matchSrcMac 00:00:c0:a8:05:04 matchDstMac 00:00:c0:a8:07:04
-168 ps_84_2 00:00:00:00:00:00:07:04 1 00:00:00:00:00:00:05:04 1 matchSrcMac 00:00:c0:a8:07:04 matchDstMac 00:00:c0:a8:05:04
-169 ps_85_1 00:00:00:00:00:00:05:05 1 00:00:00:00:00:00:07:05 1 matchSrcMac 00:00:c0:a8:05:05 matchDstMac 00:00:c0:a8:07:05
-170 ps_85_2 00:00:00:00:00:00:07:05 1 00:00:00:00:00:00:05:05 1 matchSrcMac 00:00:c0:a8:07:05 matchDstMac 00:00:c0:a8:05:05
-171 ps_86_1 00:00:00:00:00:00:05:06 1 00:00:00:00:00:00:07:06 1 matchSrcMac 00:00:c0:a8:05:06 matchDstMac 00:00:c0:a8:07:06
-172 ps_86_2 00:00:00:00:00:00:07:06 1 00:00:00:00:00:00:05:06 1 matchSrcMac 00:00:c0:a8:07:06 matchDstMac 00:00:c0:a8:05:06
-173 ps_87_1 00:00:00:00:00:00:05:07 1 00:00:00:00:00:00:07:07 1 matchSrcMac 00:00:c0:a8:05:07 matchDstMac 00:00:c0:a8:07:07
-174 ps_87_2 00:00:00:00:00:00:07:07 1 00:00:00:00:00:00:05:07 1 matchSrcMac 00:00:c0:a8:07:07 matchDstMac 00:00:c0:a8:05:07
-175 ps_88_1 00:00:00:00:00:00:05:08 1 00:00:00:00:00:00:07:08 1 matchSrcMac 00:00:c0:a8:05:08 matchDstMac 00:00:c0:a8:07:08
-176 ps_88_2 00:00:00:00:00:00:07:08 1 00:00:00:00:00:00:05:08 1 matchSrcMac 00:00:c0:a8:07:08 matchDstMac 00:00:c0:a8:05:08
-177 ps_89_1 00:00:00:00:00:00:05:09 1 00:00:00:00:00:00:07:09 1 matchSrcMac 00:00:c0:a8:05:09 matchDstMac 00:00:c0:a8:07:09
-178 ps_89_2 00:00:00:00:00:00:07:09 1 00:00:00:00:00:00:05:09 1 matchSrcMac 00:00:c0:a8:07:09 matchDstMac 00:00:c0:a8:05:09
-179 ps_90_1 00:00:00:00:00:00:05:0a 1 00:00:00:00:00:00:07:0a 1 matchSrcMac 00:00:c0:a8:05:0a matchDstMac 00:00:c0:a8:07:0a
-180 ps_90_2 00:00:00:00:00:00:07:0a 1 00:00:00:00:00:00:05:0a 1 matchSrcMac 00:00:c0:a8:07:0a matchDstMac 00:00:c0:a8:05:0a
-181 ps_91_1 00:00:00:00:00:00:05:02 1 00:00:00:00:00:00:08:02 1 matchSrcMac 00:00:c0:a8:05:02 matchDstMac 00:00:c0:a8:08:02
-182 ps_91_2 00:00:00:00:00:00:08:02 1 00:00:00:00:00:00:05:02 1 matchSrcMac 00:00:c0:a8:08:02 matchDstMac 00:00:c0:a8:05:02
-183 ps_92_1 00:00:00:00:00:00:05:03 1 00:00:00:00:00:00:08:03 1 matchSrcMac 00:00:c0:a8:05:03 matchDstMac 00:00:c0:a8:08:03
-184 ps_92_2 00:00:00:00:00:00:08:03 1 00:00:00:00:00:00:05:03 1 matchSrcMac 00:00:c0:a8:08:03 matchDstMac 00:00:c0:a8:05:03
-185 ps_93_1 00:00:00:00:00:00:05:04 1 00:00:00:00:00:00:08:04 1 matchSrcMac 00:00:c0:a8:05:04 matchDstMac 00:00:c0:a8:08:04
-186 ps_93_2 00:00:00:00:00:00:08:04 1 00:00:00:00:00:00:05:04 1 matchSrcMac 00:00:c0:a8:08:04 matchDstMac 00:00:c0:a8:05:04
-187 ps_94_1 00:00:00:00:00:00:05:05 1 00:00:00:00:00:00:08:05 1 matchSrcMac 00:00:c0:a8:05:05 matchDstMac 00:00:c0:a8:08:05
-188 ps_94_2 00:00:00:00:00:00:08:05 1 00:00:00:00:00:00:05:05 1 matchSrcMac 00:00:c0:a8:08:05 matchDstMac 00:00:c0:a8:05:05
-189 ps_95_1 00:00:00:00:00:00:05:06 1 00:00:00:00:00:00:08:06 1 matchSrcMac 00:00:c0:a8:05:06 matchDstMac 00:00:c0:a8:08:06
-190 ps_95_2 00:00:00:00:00:00:08:06 1 00:00:00:00:00:00:05:06 1 matchSrcMac 00:00:c0:a8:08:06 matchDstMac 00:00:c0:a8:05:06
-191 ps_96_1 00:00:00:00:00:00:05:07 1 00:00:00:00:00:00:08:07 1 matchSrcMac 00:00:c0:a8:05:07 matchDstMac 00:00:c0:a8:08:07
-192 ps_96_2 00:00:00:00:00:00:08:07 1 00:00:00:00:00:00:05:07 1 matchSrcMac 00:00:c0:a8:08:07 matchDstMac 00:00:c0:a8:05:07
-193 ps_97_1 00:00:00:00:00:00:05:08 1 00:00:00:00:00:00:08:08 1 matchSrcMac 00:00:c0:a8:05:08 matchDstMac 00:00:c0:a8:08:08
-194 ps_97_2 00:00:00:00:00:00:08:08 1 00:00:00:00:00:00:05:08 1 matchSrcMac 00:00:c0:a8:08:08 matchDstMac 00:00:c0:a8:05:08
-195 ps_98_1 00:00:00:00:00:00:05:09 1 00:00:00:00:00:00:08:09 1 matchSrcMac 00:00:c0:a8:05:09 matchDstMac 00:00:c0:a8:08:09
-196 ps_98_2 00:00:00:00:00:00:08:09 1 00:00:00:00:00:00:05:09 1 matchSrcMac 00:00:c0:a8:08:09 matchDstMac 00:00:c0:a8:05:09
-197 ps_99_1 00:00:00:00:00:00:05:0a 1 00:00:00:00:00:00:08:0a 1 matchSrcMac 00:00:c0:a8:05:0a matchDstMac 00:00:c0:a8:08:0a
-198 ps_99_2 00:00:00:00:00:00:08:0a 1 00:00:00:00:00:00:05:0a 1 matchSrcMac 00:00:c0:a8:08:0a matchDstMac 00:00:c0:a8:05:0a
-199 ps_100_1 00:00:00:00:00:00:06:02 1 00:00:00:00:00:00:07:02 1 matchSrcMac 00:00:c0:a8:06:02 matchDstMac 00:00:c0:a8:07:02
-200 ps_100_2 00:00:00:00:00:00:07:02 1 00:00:00:00:00:00:06:02 1 matchSrcMac 00:00:c0:a8:07:02 matchDstMac 00:00:c0:a8:06:02
-201 ps_101_1 00:00:00:00:00:00:06:03 1 00:00:00:00:00:00:07:03 1 matchSrcMac 00:00:c0:a8:06:03 matchDstMac 00:00:c0:a8:07:03
-202 ps_101_2 00:00:00:00:00:00:07:03 1 00:00:00:00:00:00:06:03 1 matchSrcMac 00:00:c0:a8:07:03 matchDstMac 00:00:c0:a8:06:03
-203 ps_102_1 00:00:00:00:00:00:06:04 1 00:00:00:00:00:00:07:04 1 matchSrcMac 00:00:c0:a8:06:04 matchDstMac 00:00:c0:a8:07:04
-204 ps_102_2 00:00:00:00:00:00:07:04 1 00:00:00:00:00:00:06:04 1 matchSrcMac 00:00:c0:a8:07:04 matchDstMac 00:00:c0:a8:06:04
-205 ps_103_1 00:00:00:00:00:00:06:05 1 00:00:00:00:00:00:07:05 1 matchSrcMac 00:00:c0:a8:06:05 matchDstMac 00:00:c0:a8:07:05
-206 ps_103_2 00:00:00:00:00:00:07:05 1 00:00:00:00:00:00:06:05 1 matchSrcMac 00:00:c0:a8:07:05 matchDstMac 00:00:c0:a8:06:05
-207 ps_104_1 00:00:00:00:00:00:06:06 1 00:00:00:00:00:00:07:06 1 matchSrcMac 00:00:c0:a8:06:06 matchDstMac 00:00:c0:a8:07:06
-208 ps_104_2 00:00:00:00:00:00:07:06 1 00:00:00:00:00:00:06:06 1 matchSrcMac 00:00:c0:a8:07:06 matchDstMac 00:00:c0:a8:06:06
-209 ps_105_1 00:00:00:00:00:00:06:07 1 00:00:00:00:00:00:07:07 1 matchSrcMac 00:00:c0:a8:06:07 matchDstMac 00:00:c0:a8:07:07
-210 ps_105_2 00:00:00:00:00:00:07:07 1 00:00:00:00:00:00:06:07 1 matchSrcMac 00:00:c0:a8:07:07 matchDstMac 00:00:c0:a8:06:07
-211 ps_106_1 00:00:00:00:00:00:06:08 1 00:00:00:00:00:00:07:08 1 matchSrcMac 00:00:c0:a8:06:08 matchDstMac 00:00:c0:a8:07:08
-212 ps_106_2 00:00:00:00:00:00:07:08 1 00:00:00:00:00:00:06:08 1 matchSrcMac 00:00:c0:a8:07:08 matchDstMac 00:00:c0:a8:06:08
-213 ps_107_1 00:00:00:00:00:00:06:09 1 00:00:00:00:00:00:07:09 1 matchSrcMac 00:00:c0:a8:06:09 matchDstMac 00:00:c0:a8:07:09
-214 ps_107_2 00:00:00:00:00:00:07:09 1 00:00:00:00:00:00:06:09 1 matchSrcMac 00:00:c0:a8:07:09 matchDstMac 00:00:c0:a8:06:09
-215 ps_108_1 00:00:00:00:00:00:06:0a 1 00:00:00:00:00:00:07:0a 1 matchSrcMac 00:00:c0:a8:06:0a matchDstMac 00:00:c0:a8:07:0a
-216 ps_108_2 00:00:00:00:00:00:07:0a 1 00:00:00:00:00:00:06:0a 1 matchSrcMac 00:00:c0:a8:07:0a matchDstMac 00:00:c0:a8:06:0a
-217 ps_109_1 00:00:00:00:00:00:06:02 1 00:00:00:00:00:00:08:02 1 matchSrcMac 00:00:c0:a8:06:02 matchDstMac 00:00:c0:a8:08:02
-218 ps_109_2 00:00:00:00:00:00:08:02 1 00:00:00:00:00:00:06:02 1 matchSrcMac 00:00:c0:a8:08:02 matchDstMac 00:00:c0:a8:06:02
-219 ps_110_1 00:00:00:00:00:00:06:03 1 00:00:00:00:00:00:08:03 1 matchSrcMac 00:00:c0:a8:06:03 matchDstMac 00:00:c0:a8:08:03
-220 ps_110_2 00:00:00:00:00:00:08:03 1 00:00:00:00:00:00:06:03 1 matchSrcMac 00:00:c0:a8:08:03 matchDstMac 00:00:c0:a8:06:03
-221 ps_111_1 00:00:00:00:00:00:06:04 1 00:00:00:00:00:00:08:04 1 matchSrcMac 00:00:c0:a8:06:04 matchDstMac 00:00:c0:a8:08:04
-222 ps_111_2 00:00:00:00:00:00:08:04 1 00:00:00:00:00:00:06:04 1 matchSrcMac 00:00:c0:a8:08:04 matchDstMac 00:00:c0:a8:06:04
-223 ps_112_1 00:00:00:00:00:00:06:05 1 00:00:00:00:00:00:08:05 1 matchSrcMac 00:00:c0:a8:06:05 matchDstMac 00:00:c0:a8:08:05
-224 ps_112_2 00:00:00:00:00:00:08:05 1 00:00:00:00:00:00:06:05 1 matchSrcMac 00:00:c0:a8:08:05 matchDstMac 00:00:c0:a8:06:05
-225 ps_113_1 00:00:00:00:00:00:06:06 1 00:00:00:00:00:00:08:06 1 matchSrcMac 00:00:c0:a8:06:06 matchDstMac 00:00:c0:a8:08:06
-226 ps_113_2 00:00:00:00:00:00:08:06 1 00:00:00:00:00:00:06:06 1 matchSrcMac 00:00:c0:a8:08:06 matchDstMac 00:00:c0:a8:06:06
-227 ps_114_1 00:00:00:00:00:00:06:07 1 00:00:00:00:00:00:08:07 1 matchSrcMac 00:00:c0:a8:06:07 matchDstMac 00:00:c0:a8:08:07
-228 ps_114_2 00:00:00:00:00:00:08:07 1 00:00:00:00:00:00:06:07 1 matchSrcMac 00:00:c0:a8:08:07 matchDstMac 00:00:c0:a8:06:07
-229 ps_115_1 00:00:00:00:00:00:06:08 1 00:00:00:00:00:00:08:08 1 matchSrcMac 00:00:c0:a8:06:08 matchDstMac 00:00:c0:a8:08:08
-230 ps_115_2 00:00:00:00:00:00:08:08 1 00:00:00:00:00:00:06:08 1 matchSrcMac 00:00:c0:a8:08:08 matchDstMac 00:00:c0:a8:06:08
-231 ps_116_1 00:00:00:00:00:00:06:09 1 00:00:00:00:00:00:08:09 1 matchSrcMac 00:00:c0:a8:06:09 matchDstMac 00:00:c0:a8:08:09
-232 ps_116_2 00:00:00:00:00:00:08:09 1 00:00:00:00:00:00:06:09 1 matchSrcMac 00:00:c0:a8:08:09 matchDstMac 00:00:c0:a8:06:09
-233 ps_117_1 00:00:00:00:00:00:06:0a 1 00:00:00:00:00:00:08:0a 1 matchSrcMac 00:00:c0:a8:06:0a matchDstMac 00:00:c0:a8:08:0a
-234 ps_117_2 00:00:00:00:00:00:08:0a 1 00:00:00:00:00:00:06:0a 1 matchSrcMac 00:00:c0:a8:08:0a matchDstMac 00:00:c0:a8:06:0a
-235 ps_118_1 00:00:00:00:00:00:07:02 1 00:00:00:00:00:00:08:02 1 matchSrcMac 00:00:c0:a8:07:02 matchDstMac 00:00:c0:a8:08:02
-236 ps_118_2 00:00:00:00:00:00:08:02 1 00:00:00:00:00:00:07:02 1 matchSrcMac 00:00:c0:a8:08:02 matchDstMac 00:00:c0:a8:07:02
-237 ps_119_1 00:00:00:00:00:00:07:03 1 00:00:00:00:00:00:08:03 1 matchSrcMac 00:00:c0:a8:07:03 matchDstMac 00:00:c0:a8:08:03
-238 ps_119_2 00:00:00:00:00:00:08:03 1 00:00:00:00:00:00:07:03 1 matchSrcMac 00:00:c0:a8:08:03 matchDstMac 00:00:c0:a8:07:03
-239 ps_120_1 00:00:00:00:00:00:07:04 1 00:00:00:00:00:00:08:04 1 matchSrcMac 00:00:c0:a8:07:04 matchDstMac 00:00:c0:a8:08:04
-240 ps_120_2 00:00:00:00:00:00:08:04 1 00:00:00:00:00:00:07:04 1 matchSrcMac 00:00:c0:a8:08:04 matchDstMac 00:00:c0:a8:07:04
-241 ps_121_1 00:00:00:00:00:00:07:05 1 00:00:00:00:00:00:08:05 1 matchSrcMac 00:00:c0:a8:07:05 matchDstMac 00:00:c0:a8:08:05
-242 ps_121_2 00:00:00:00:00:00:08:05 1 00:00:00:00:00:00:07:05 1 matchSrcMac 00:00:c0:a8:08:05 matchDstMac 00:00:c0:a8:07:05
-243 ps_122_1 00:00:00:00:00:00:07:06 1 00:00:00:00:00:00:08:06 1 matchSrcMac 00:00:c0:a8:07:06 matchDstMac 00:00:c0:a8:08:06
-244 ps_122_2 00:00:00:00:00:00:08:06 1 00:00:00:00:00:00:07:06 1 matchSrcMac 00:00:c0:a8:08:06 matchDstMac 00:00:c0:a8:07:06
-245 ps_123_1 00:00:00:00:00:00:07:07 1 00:00:00:00:00:00:08:07 1 matchSrcMac 00:00:c0:a8:07:07 matchDstMac 00:00:c0:a8:08:07
-246 ps_123_2 00:00:00:00:00:00:08:07 1 00:00:00:00:00:00:07:07 1 matchSrcMac 00:00:c0:a8:08:07 matchDstMac 00:00:c0:a8:07:07
-247 ps_124_1 00:00:00:00:00:00:07:08 1 00:00:00:00:00:00:08:08 1 matchSrcMac 00:00:c0:a8:07:08 matchDstMac 00:00:c0:a8:08:08
-248 ps_124_2 00:00:00:00:00:00:08:08 1 00:00:00:00:00:00:07:08 1 matchSrcMac 00:00:c0:a8:08:08 matchDstMac 00:00:c0:a8:07:08
-249 ps_125_1 00:00:00:00:00:00:07:09 1 00:00:00:00:00:00:08:09 1 matchSrcMac 00:00:c0:a8:07:09 matchDstMac 00:00:c0:a8:08:09
-250 ps_125_2 00:00:00:00:00:00:08:09 1 00:00:00:00:00:00:07:09 1 matchSrcMac 00:00:c0:a8:08:09 matchDstMac 00:00:c0:a8:07:09
-251 ps_126_1 00:00:00:00:00:00:07:0a 1 00:00:00:00:00:00:08:0a 1 matchSrcMac 00:00:c0:a8:07:0a matchDstMac 00:00:c0:a8:08:0a
-252 ps_126_2 00:00:00:00:00:00:08:0a 1 00:00:00:00:00:00:07:0a 1 matchSrcMac 00:00:c0:a8:08:0a matchDstMac 00:00:c0:a8:07:0a
diff --git a/scripts/flowdef_demo_start.txt b/scripts/flowdef_demo_start.txt
deleted file mode 100644
index 507cc93..0000000
--- a/scripts/flowdef_demo_start.txt
+++ /dev/null
@@ -1,144 +0,0 @@
-1 ps_1_1 00:00:00:00:00:00:02:02 1 00:00:00:00:00:00:03:02 1 matchSrcMac 00:00:c0:a8:02:02 matchDstMac 00:00:c0:a8:03:02
-2 ps_1_2 00:00:00:00:00:00:03:02 1 00:00:00:00:00:00:02:02 1 matchSrcMac 00:00:c0:a8:03:02 matchDstMac 00:00:c0:a8:02:02
-3 ps_2_1 00:00:00:00:00:00:02:03 1 00:00:00:00:00:00:03:03 1 matchSrcMac 00:00:c0:a8:02:03 matchDstMac 00:00:c0:a8:03:03
-4 ps_2_2 00:00:00:00:00:00:03:03 1 00:00:00:00:00:00:02:03 1 matchSrcMac 00:00:c0:a8:03:03 matchDstMac 00:00:c0:a8:02:03
-5 ps_3_1 00:00:00:00:00:00:02:04 1 00:00:00:00:00:00:03:04 1 matchSrcMac 00:00:c0:a8:02:04 matchDstMac 00:00:c0:a8:03:04
-6 ps_3_2 00:00:00:00:00:00:03:04 1 00:00:00:00:00:00:02:04 1 matchSrcMac 00:00:c0:a8:03:04 matchDstMac 00:00:c0:a8:02:04
-7 ps_4_1 00:00:00:00:00:00:02:05 1 00:00:00:00:00:00:03:05 1 matchSrcMac 00:00:c0:a8:02:05 matchDstMac 00:00:c0:a8:03:05
-8 ps_4_2 00:00:00:00:00:00:03:05 1 00:00:00:00:00:00:02:05 1 matchSrcMac 00:00:c0:a8:03:05 matchDstMac 00:00:c0:a8:02:05
-9 ps_5_1 00:00:00:00:00:00:02:06 1 00:00:00:00:00:00:03:06 1 matchSrcMac 00:00:c0:a8:02:06 matchDstMac 00:00:c0:a8:03:06
-10 ps_5_2 00:00:00:00:00:00:03:06 1 00:00:00:00:00:00:02:06 1 matchSrcMac 00:00:c0:a8:03:06 matchDstMac 00:00:c0:a8:02:06
-11 ps_6_1 00:00:00:00:00:00:02:07 1 00:00:00:00:00:00:03:07 1 matchSrcMac 00:00:c0:a8:02:07 matchDstMac 00:00:c0:a8:03:07
-12 ps_6_2 00:00:00:00:00:00:03:07 1 00:00:00:00:00:00:02:07 1 matchSrcMac 00:00:c0:a8:03:07 matchDstMac 00:00:c0:a8:02:07
-13 ps_7_1 00:00:00:00:00:00:02:08 1 00:00:00:00:00:00:03:08 1 matchSrcMac 00:00:c0:a8:02:08 matchDstMac 00:00:c0:a8:03:08
-14 ps_7_2 00:00:00:00:00:00:03:08 1 00:00:00:00:00:00:02:08 1 matchSrcMac 00:00:c0:a8:03:08 matchDstMac 00:00:c0:a8:02:08
-15 ps_8_1 00:00:00:00:00:00:02:09 1 00:00:00:00:00:00:03:09 1 matchSrcMac 00:00:c0:a8:02:09 matchDstMac 00:00:c0:a8:03:09
-16 ps_8_2 00:00:00:00:00:00:03:09 1 00:00:00:00:00:00:02:09 1 matchSrcMac 00:00:c0:a8:03:09 matchDstMac 00:00:c0:a8:02:09
-17 ps_9_1 00:00:00:00:00:00:02:0a 1 00:00:00:00:00:00:03:0a 1 matchSrcMac 00:00:c0:a8:02:0a matchDstMac 00:00:c0:a8:03:0a
-18 ps_9_2 00:00:00:00:00:00:03:0a 1 00:00:00:00:00:00:02:0a 1 matchSrcMac 00:00:c0:a8:03:0a matchDstMac 00:00:c0:a8:02:0a
-19 ps_10_1 00:00:00:00:00:00:02:0b 1 00:00:00:00:00:00:03:0b 1 matchSrcMac 00:00:c0:a8:02:0b matchDstMac 00:00:c0:a8:03:0b
-20 ps_10_2 00:00:00:00:00:00:03:0b 1 00:00:00:00:00:00:02:0b 1 matchSrcMac 00:00:c0:a8:03:0b matchDstMac 00:00:c0:a8:02:0b
-21 ps_11_1 00:00:00:00:00:00:02:0c 1 00:00:00:00:00:00:03:0c 1 matchSrcMac 00:00:c0:a8:02:0c matchDstMac 00:00:c0:a8:03:0c
-22 ps_11_2 00:00:00:00:00:00:03:0c 1 00:00:00:00:00:00:02:0c 1 matchSrcMac 00:00:c0:a8:03:0c matchDstMac 00:00:c0:a8:02:0c
-23 ps_12_1 00:00:00:00:00:00:02:0d 1 00:00:00:00:00:00:03:0d 1 matchSrcMac 00:00:c0:a8:02:0d matchDstMac 00:00:c0:a8:03:0d
-24 ps_12_2 00:00:00:00:00:00:03:0d 1 00:00:00:00:00:00:02:0d 1 matchSrcMac 00:00:c0:a8:03:0d matchDstMac 00:00:c0:a8:02:0d
-25 ps_13_1 00:00:00:00:00:00:02:0e 1 00:00:00:00:00:00:03:0e 1 matchSrcMac 00:00:c0:a8:02:0e matchDstMac 00:00:c0:a8:03:0e
-26 ps_13_2 00:00:00:00:00:00:03:0e 1 00:00:00:00:00:00:02:0e 1 matchSrcMac 00:00:c0:a8:03:0e matchDstMac 00:00:c0:a8:02:0e
-27 ps_14_1 00:00:00:00:00:00:02:0f 1 00:00:00:00:00:00:03:0f 1 matchSrcMac 00:00:c0:a8:02:0f matchDstMac 00:00:c0:a8:03:0f
-28 ps_14_2 00:00:00:00:00:00:03:0f 1 00:00:00:00:00:00:02:0f 1 matchSrcMac 00:00:c0:a8:03:0f matchDstMac 00:00:c0:a8:02:0f
-29 ps_15_1 00:00:00:00:00:00:02:10 1 00:00:00:00:00:00:03:10 1 matchSrcMac 00:00:c0:a8:02:10 matchDstMac 00:00:c0:a8:03:10
-30 ps_15_2 00:00:00:00:00:00:03:10 1 00:00:00:00:00:00:02:10 1 matchSrcMac 00:00:c0:a8:03:10 matchDstMac 00:00:c0:a8:02:10
-31 ps_16_1 00:00:00:00:00:00:02:11 1 00:00:00:00:00:00:03:11 1 matchSrcMac 00:00:c0:a8:02:11 matchDstMac 00:00:c0:a8:03:11
-32 ps_16_2 00:00:00:00:00:00:03:11 1 00:00:00:00:00:00:02:11 1 matchSrcMac 00:00:c0:a8:03:11 matchDstMac 00:00:c0:a8:02:11
-33 ps_17_1 00:00:00:00:00:00:02:12 1 00:00:00:00:00:00:03:12 1 matchSrcMac 00:00:c0:a8:02:12 matchDstMac 00:00:c0:a8:03:12
-34 ps_17_2 00:00:00:00:00:00:03:12 1 00:00:00:00:00:00:02:12 1 matchSrcMac 00:00:c0:a8:03:12 matchDstMac 00:00:c0:a8:02:12
-35 ps_18_1 00:00:00:00:00:00:02:13 1 00:00:00:00:00:00:03:13 1 matchSrcMac 00:00:c0:a8:02:13 matchDstMac 00:00:c0:a8:03:13
-36 ps_18_2 00:00:00:00:00:00:03:13 1 00:00:00:00:00:00:02:13 1 matchSrcMac 00:00:c0:a8:03:13 matchDstMac 00:00:c0:a8:02:13
-37 ps_19_1 00:00:00:00:00:00:02:14 1 00:00:00:00:00:00:03:14 1 matchSrcMac 00:00:c0:a8:02:14 matchDstMac 00:00:c0:a8:03:14
-38 ps_19_2 00:00:00:00:00:00:03:14 1 00:00:00:00:00:00:02:14 1 matchSrcMac 00:00:c0:a8:03:14 matchDstMac 00:00:c0:a8:02:14
-39 ps_20_1 00:00:00:00:00:00:02:15 1 00:00:00:00:00:00:03:15 1 matchSrcMac 00:00:c0:a8:02:15 matchDstMac 00:00:c0:a8:03:15
-40 ps_20_2 00:00:00:00:00:00:03:15 1 00:00:00:00:00:00:02:15 1 matchSrcMac 00:00:c0:a8:03:15 matchDstMac 00:00:c0:a8:02:15
-41 ps_21_1 00:00:00:00:00:00:02:16 1 00:00:00:00:00:00:03:16 1 matchSrcMac 00:00:c0:a8:02:16 matchDstMac 00:00:c0:a8:03:16
-42 ps_21_2 00:00:00:00:00:00:03:16 1 00:00:00:00:00:00:02:16 1 matchSrcMac 00:00:c0:a8:03:16 matchDstMac 00:00:c0:a8:02:16
-43 ps_22_1 00:00:00:00:00:00:02:17 1 00:00:00:00:00:00:03:17 1 matchSrcMac 00:00:c0:a8:02:17 matchDstMac 00:00:c0:a8:03:17
-44 ps_22_2 00:00:00:00:00:00:03:17 1 00:00:00:00:00:00:02:17 1 matchSrcMac 00:00:c0:a8:03:17 matchDstMac 00:00:c0:a8:02:17
-45 ps_23_1 00:00:00:00:00:00:02:18 1 00:00:00:00:00:00:03:18 1 matchSrcMac 00:00:c0:a8:02:18 matchDstMac 00:00:c0:a8:03:18
-46 ps_23_2 00:00:00:00:00:00:03:18 1 00:00:00:00:00:00:02:18 1 matchSrcMac 00:00:c0:a8:03:18 matchDstMac 00:00:c0:a8:02:18
-47 ps_24_1 00:00:00:00:00:00:02:19 1 00:00:00:00:00:00:03:19 1 matchSrcMac 00:00:c0:a8:02:19 matchDstMac 00:00:c0:a8:03:19
-48 ps_24_2 00:00:00:00:00:00:03:19 1 00:00:00:00:00:00:02:19 1 matchSrcMac 00:00:c0:a8:03:19 matchDstMac 00:00:c0:a8:02:19
-49 ps_25_1 00:00:00:00:00:00:02:02 1 00:00:00:00:00:00:04:02 1 matchSrcMac 00:00:c0:a8:02:02 matchDstMac 00:00:c0:a8:04:02
-50 ps_25_2 00:00:00:00:00:00:04:02 1 00:00:00:00:00:00:02:02 1 matchSrcMac 00:00:c0:a8:04:02 matchDstMac 00:00:c0:a8:02:02
-51 ps_26_1 00:00:00:00:00:00:02:03 1 00:00:00:00:00:00:04:03 1 matchSrcMac 00:00:c0:a8:02:03 matchDstMac 00:00:c0:a8:04:03
-52 ps_26_2 00:00:00:00:00:00:04:03 1 00:00:00:00:00:00:02:03 1 matchSrcMac 00:00:c0:a8:04:03 matchDstMac 00:00:c0:a8:02:03
-53 ps_27_1 00:00:00:00:00:00:02:04 1 00:00:00:00:00:00:04:04 1 matchSrcMac 00:00:c0:a8:02:04 matchDstMac 00:00:c0:a8:04:04
-54 ps_27_2 00:00:00:00:00:00:04:04 1 00:00:00:00:00:00:02:04 1 matchSrcMac 00:00:c0:a8:04:04 matchDstMac 00:00:c0:a8:02:04
-55 ps_28_1 00:00:00:00:00:00:02:05 1 00:00:00:00:00:00:04:05 1 matchSrcMac 00:00:c0:a8:02:05 matchDstMac 00:00:c0:a8:04:05
-56 ps_28_2 00:00:00:00:00:00:04:05 1 00:00:00:00:00:00:02:05 1 matchSrcMac 00:00:c0:a8:04:05 matchDstMac 00:00:c0:a8:02:05
-57 ps_29_1 00:00:00:00:00:00:02:06 1 00:00:00:00:00:00:04:06 1 matchSrcMac 00:00:c0:a8:02:06 matchDstMac 00:00:c0:a8:04:06
-58 ps_29_2 00:00:00:00:00:00:04:06 1 00:00:00:00:00:00:02:06 1 matchSrcMac 00:00:c0:a8:04:06 matchDstMac 00:00:c0:a8:02:06
-59 ps_30_1 00:00:00:00:00:00:02:07 1 00:00:00:00:00:00:04:07 1 matchSrcMac 00:00:c0:a8:02:07 matchDstMac 00:00:c0:a8:04:07
-60 ps_30_2 00:00:00:00:00:00:04:07 1 00:00:00:00:00:00:02:07 1 matchSrcMac 00:00:c0:a8:04:07 matchDstMac 00:00:c0:a8:02:07
-61 ps_31_1 00:00:00:00:00:00:02:08 1 00:00:00:00:00:00:04:08 1 matchSrcMac 00:00:c0:a8:02:08 matchDstMac 00:00:c0:a8:04:08
-62 ps_31_2 00:00:00:00:00:00:04:08 1 00:00:00:00:00:00:02:08 1 matchSrcMac 00:00:c0:a8:04:08 matchDstMac 00:00:c0:a8:02:08
-63 ps_32_1 00:00:00:00:00:00:02:09 1 00:00:00:00:00:00:04:09 1 matchSrcMac 00:00:c0:a8:02:09 matchDstMac 00:00:c0:a8:04:09
-64 ps_32_2 00:00:00:00:00:00:04:09 1 00:00:00:00:00:00:02:09 1 matchSrcMac 00:00:c0:a8:04:09 matchDstMac 00:00:c0:a8:02:09
-65 ps_33_1 00:00:00:00:00:00:02:0a 1 00:00:00:00:00:00:04:0a 1 matchSrcMac 00:00:c0:a8:02:0a matchDstMac 00:00:c0:a8:04:0a
-66 ps_33_2 00:00:00:00:00:00:04:0a 1 00:00:00:00:00:00:02:0a 1 matchSrcMac 00:00:c0:a8:04:0a matchDstMac 00:00:c0:a8:02:0a
-67 ps_34_1 00:00:00:00:00:00:02:0b 1 00:00:00:00:00:00:04:0b 1 matchSrcMac 00:00:c0:a8:02:0b matchDstMac 00:00:c0:a8:04:0b
-68 ps_34_2 00:00:00:00:00:00:04:0b 1 00:00:00:00:00:00:02:0b 1 matchSrcMac 00:00:c0:a8:04:0b matchDstMac 00:00:c0:a8:02:0b
-69 ps_35_1 00:00:00:00:00:00:02:0c 1 00:00:00:00:00:00:04:0c 1 matchSrcMac 00:00:c0:a8:02:0c matchDstMac 00:00:c0:a8:04:0c
-70 ps_35_2 00:00:00:00:00:00:04:0c 1 00:00:00:00:00:00:02:0c 1 matchSrcMac 00:00:c0:a8:04:0c matchDstMac 00:00:c0:a8:02:0c
-71 ps_36_1 00:00:00:00:00:00:02:0d 1 00:00:00:00:00:00:04:0d 1 matchSrcMac 00:00:c0:a8:02:0d matchDstMac 00:00:c0:a8:04:0d
-72 ps_36_2 00:00:00:00:00:00:04:0d 1 00:00:00:00:00:00:02:0d 1 matchSrcMac 00:00:c0:a8:04:0d matchDstMac 00:00:c0:a8:02:0d
-73 ps_37_1 00:00:00:00:00:00:02:0e 1 00:00:00:00:00:00:04:0e 1 matchSrcMac 00:00:c0:a8:02:0e matchDstMac 00:00:c0:a8:04:0e
-74 ps_37_2 00:00:00:00:00:00:04:0e 1 00:00:00:00:00:00:02:0e 1 matchSrcMac 00:00:c0:a8:04:0e matchDstMac 00:00:c0:a8:02:0e
-75 ps_38_1 00:00:00:00:00:00:02:0f 1 00:00:00:00:00:00:04:0f 1 matchSrcMac 00:00:c0:a8:02:0f matchDstMac 00:00:c0:a8:04:0f
-76 ps_38_2 00:00:00:00:00:00:04:0f 1 00:00:00:00:00:00:02:0f 1 matchSrcMac 00:00:c0:a8:04:0f matchDstMac 00:00:c0:a8:02:0f
-77 ps_39_1 00:00:00:00:00:00:02:10 1 00:00:00:00:00:00:04:10 1 matchSrcMac 00:00:c0:a8:02:10 matchDstMac 00:00:c0:a8:04:10
-78 ps_39_2 00:00:00:00:00:00:04:10 1 00:00:00:00:00:00:02:10 1 matchSrcMac 00:00:c0:a8:04:10 matchDstMac 00:00:c0:a8:02:10
-79 ps_40_1 00:00:00:00:00:00:02:11 1 00:00:00:00:00:00:04:11 1 matchSrcMac 00:00:c0:a8:02:11 matchDstMac 00:00:c0:a8:04:11
-80 ps_40_2 00:00:00:00:00:00:04:11 1 00:00:00:00:00:00:02:11 1 matchSrcMac 00:00:c0:a8:04:11 matchDstMac 00:00:c0:a8:02:11
-81 ps_41_1 00:00:00:00:00:00:02:12 1 00:00:00:00:00:00:04:12 1 matchSrcMac 00:00:c0:a8:02:12 matchDstMac 00:00:c0:a8:04:12
-82 ps_41_2 00:00:00:00:00:00:04:12 1 00:00:00:00:00:00:02:12 1 matchSrcMac 00:00:c0:a8:04:12 matchDstMac 00:00:c0:a8:02:12
-83 ps_42_1 00:00:00:00:00:00:02:13 1 00:00:00:00:00:00:04:13 1 matchSrcMac 00:00:c0:a8:02:13 matchDstMac 00:00:c0:a8:04:13
-84 ps_42_2 00:00:00:00:00:00:04:13 1 00:00:00:00:00:00:02:13 1 matchSrcMac 00:00:c0:a8:04:13 matchDstMac 00:00:c0:a8:02:13
-85 ps_43_1 00:00:00:00:00:00:02:14 1 00:00:00:00:00:00:04:14 1 matchSrcMac 00:00:c0:a8:02:14 matchDstMac 00:00:c0:a8:04:14
-86 ps_43_2 00:00:00:00:00:00:04:14 1 00:00:00:00:00:00:02:14 1 matchSrcMac 00:00:c0:a8:04:14 matchDstMac 00:00:c0:a8:02:14
-87 ps_44_1 00:00:00:00:00:00:02:15 1 00:00:00:00:00:00:04:15 1 matchSrcMac 00:00:c0:a8:02:15 matchDstMac 00:00:c0:a8:04:15
-88 ps_44_2 00:00:00:00:00:00:04:15 1 00:00:00:00:00:00:02:15 1 matchSrcMac 00:00:c0:a8:04:15 matchDstMac 00:00:c0:a8:02:15
-89 ps_45_1 00:00:00:00:00:00:02:16 1 00:00:00:00:00:00:04:16 1 matchSrcMac 00:00:c0:a8:02:16 matchDstMac 00:00:c0:a8:04:16
-90 ps_45_2 00:00:00:00:00:00:04:16 1 00:00:00:00:00:00:02:16 1 matchSrcMac 00:00:c0:a8:04:16 matchDstMac 00:00:c0:a8:02:16
-91 ps_46_1 00:00:00:00:00:00:02:17 1 00:00:00:00:00:00:04:17 1 matchSrcMac 00:00:c0:a8:02:17 matchDstMac 00:00:c0:a8:04:17
-92 ps_46_2 00:00:00:00:00:00:04:17 1 00:00:00:00:00:00:02:17 1 matchSrcMac 00:00:c0:a8:04:17 matchDstMac 00:00:c0:a8:02:17
-93 ps_47_1 00:00:00:00:00:00:02:18 1 00:00:00:00:00:00:04:18 1 matchSrcMac 00:00:c0:a8:02:18 matchDstMac 00:00:c0:a8:04:18
-94 ps_47_2 00:00:00:00:00:00:04:18 1 00:00:00:00:00:00:02:18 1 matchSrcMac 00:00:c0:a8:04:18 matchDstMac 00:00:c0:a8:02:18
-95 ps_48_1 00:00:00:00:00:00:02:19 1 00:00:00:00:00:00:04:19 1 matchSrcMac 00:00:c0:a8:02:19 matchDstMac 00:00:c0:a8:04:19
-96 ps_48_2 00:00:00:00:00:00:04:19 1 00:00:00:00:00:00:02:19 1 matchSrcMac 00:00:c0:a8:04:19 matchDstMac 00:00:c0:a8:02:19
-97 ps_49_1 00:00:00:00:00:00:03:02 1 00:00:00:00:00:00:04:02 1 matchSrcMac 00:00:c0:a8:03:02 matchDstMac 00:00:c0:a8:04:02
-98 ps_49_2 00:00:00:00:00:00:04:02 1 00:00:00:00:00:00:03:02 1 matchSrcMac 00:00:c0:a8:04:02 matchDstMac 00:00:c0:a8:03:02
-99 ps_50_1 00:00:00:00:00:00:03:03 1 00:00:00:00:00:00:04:03 1 matchSrcMac 00:00:c0:a8:03:03 matchDstMac 00:00:c0:a8:04:03
-100 ps_50_2 00:00:00:00:00:00:04:03 1 00:00:00:00:00:00:03:03 1 matchSrcMac 00:00:c0:a8:04:03 matchDstMac 00:00:c0:a8:03:03
-101 ps_51_1 00:00:00:00:00:00:03:04 1 00:00:00:00:00:00:04:04 1 matchSrcMac 00:00:c0:a8:03:04 matchDstMac 00:00:c0:a8:04:04
-102 ps_51_2 00:00:00:00:00:00:04:04 1 00:00:00:00:00:00:03:04 1 matchSrcMac 00:00:c0:a8:04:04 matchDstMac 00:00:c0:a8:03:04
-103 ps_52_1 00:00:00:00:00:00:03:05 1 00:00:00:00:00:00:04:05 1 matchSrcMac 00:00:c0:a8:03:05 matchDstMac 00:00:c0:a8:04:05
-104 ps_52_2 00:00:00:00:00:00:04:05 1 00:00:00:00:00:00:03:05 1 matchSrcMac 00:00:c0:a8:04:05 matchDstMac 00:00:c0:a8:03:05
-105 ps_53_1 00:00:00:00:00:00:03:06 1 00:00:00:00:00:00:04:06 1 matchSrcMac 00:00:c0:a8:03:06 matchDstMac 00:00:c0:a8:04:06
-106 ps_53_2 00:00:00:00:00:00:04:06 1 00:00:00:00:00:00:03:06 1 matchSrcMac 00:00:c0:a8:04:06 matchDstMac 00:00:c0:a8:03:06
-107 ps_54_1 00:00:00:00:00:00:03:07 1 00:00:00:00:00:00:04:07 1 matchSrcMac 00:00:c0:a8:03:07 matchDstMac 00:00:c0:a8:04:07
-108 ps_54_2 00:00:00:00:00:00:04:07 1 00:00:00:00:00:00:03:07 1 matchSrcMac 00:00:c0:a8:04:07 matchDstMac 00:00:c0:a8:03:07
-109 ps_55_1 00:00:00:00:00:00:03:08 1 00:00:00:00:00:00:04:08 1 matchSrcMac 00:00:c0:a8:03:08 matchDstMac 00:00:c0:a8:04:08
-110 ps_55_2 00:00:00:00:00:00:04:08 1 00:00:00:00:00:00:03:08 1 matchSrcMac 00:00:c0:a8:04:08 matchDstMac 00:00:c0:a8:03:08
-111 ps_56_1 00:00:00:00:00:00:03:09 1 00:00:00:00:00:00:04:09 1 matchSrcMac 00:00:c0:a8:03:09 matchDstMac 00:00:c0:a8:04:09
-112 ps_56_2 00:00:00:00:00:00:04:09 1 00:00:00:00:00:00:03:09 1 matchSrcMac 00:00:c0:a8:04:09 matchDstMac 00:00:c0:a8:03:09
-113 ps_57_1 00:00:00:00:00:00:03:0a 1 00:00:00:00:00:00:04:0a 1 matchSrcMac 00:00:c0:a8:03:0a matchDstMac 00:00:c0:a8:04:0a
-114 ps_57_2 00:00:00:00:00:00:04:0a 1 00:00:00:00:00:00:03:0a 1 matchSrcMac 00:00:c0:a8:04:0a matchDstMac 00:00:c0:a8:03:0a
-115 ps_58_1 00:00:00:00:00:00:03:0b 1 00:00:00:00:00:00:04:0b 1 matchSrcMac 00:00:c0:a8:03:0b matchDstMac 00:00:c0:a8:04:0b
-116 ps_58_2 00:00:00:00:00:00:04:0b 1 00:00:00:00:00:00:03:0b 1 matchSrcMac 00:00:c0:a8:04:0b matchDstMac 00:00:c0:a8:03:0b
-117 ps_59_1 00:00:00:00:00:00:03:0c 1 00:00:00:00:00:00:04:0c 1 matchSrcMac 00:00:c0:a8:03:0c matchDstMac 00:00:c0:a8:04:0c
-118 ps_59_2 00:00:00:00:00:00:04:0c 1 00:00:00:00:00:00:03:0c 1 matchSrcMac 00:00:c0:a8:04:0c matchDstMac 00:00:c0:a8:03:0c
-119 ps_60_1 00:00:00:00:00:00:03:0d 1 00:00:00:00:00:00:04:0d 1 matchSrcMac 00:00:c0:a8:03:0d matchDstMac 00:00:c0:a8:04:0d
-120 ps_60_2 00:00:00:00:00:00:04:0d 1 00:00:00:00:00:00:03:0d 1 matchSrcMac 00:00:c0:a8:04:0d matchDstMac 00:00:c0:a8:03:0d
-121 ps_61_1 00:00:00:00:00:00:03:0e 1 00:00:00:00:00:00:04:0e 1 matchSrcMac 00:00:c0:a8:03:0e matchDstMac 00:00:c0:a8:04:0e
-122 ps_61_2 00:00:00:00:00:00:04:0e 1 00:00:00:00:00:00:03:0e 1 matchSrcMac 00:00:c0:a8:04:0e matchDstMac 00:00:c0:a8:03:0e
-123 ps_62_1 00:00:00:00:00:00:03:0f 1 00:00:00:00:00:00:04:0f 1 matchSrcMac 00:00:c0:a8:03:0f matchDstMac 00:00:c0:a8:04:0f
-124 ps_62_2 00:00:00:00:00:00:04:0f 1 00:00:00:00:00:00:03:0f 1 matchSrcMac 00:00:c0:a8:04:0f matchDstMac 00:00:c0:a8:03:0f
-125 ps_63_1 00:00:00:00:00:00:03:10 1 00:00:00:00:00:00:04:10 1 matchSrcMac 00:00:c0:a8:03:10 matchDstMac 00:00:c0:a8:04:10
-126 ps_63_2 00:00:00:00:00:00:04:10 1 00:00:00:00:00:00:03:10 1 matchSrcMac 00:00:c0:a8:04:10 matchDstMac 00:00:c0:a8:03:10
-127 ps_64_1 00:00:00:00:00:00:03:11 1 00:00:00:00:00:00:04:11 1 matchSrcMac 00:00:c0:a8:03:11 matchDstMac 00:00:c0:a8:04:11
-128 ps_64_2 00:00:00:00:00:00:04:11 1 00:00:00:00:00:00:03:11 1 matchSrcMac 00:00:c0:a8:04:11 matchDstMac 00:00:c0:a8:03:11
-129 ps_65_1 00:00:00:00:00:00:03:12 1 00:00:00:00:00:00:04:12 1 matchSrcMac 00:00:c0:a8:03:12 matchDstMac 00:00:c0:a8:04:12
-130 ps_65_2 00:00:00:00:00:00:04:12 1 00:00:00:00:00:00:03:12 1 matchSrcMac 00:00:c0:a8:04:12 matchDstMac 00:00:c0:a8:03:12
-131 ps_66_1 00:00:00:00:00:00:03:13 1 00:00:00:00:00:00:04:13 1 matchSrcMac 00:00:c0:a8:03:13 matchDstMac 00:00:c0:a8:04:13
-132 ps_66_2 00:00:00:00:00:00:04:13 1 00:00:00:00:00:00:03:13 1 matchSrcMac 00:00:c0:a8:04:13 matchDstMac 00:00:c0:a8:03:13
-133 ps_67_1 00:00:00:00:00:00:03:14 1 00:00:00:00:00:00:04:14 1 matchSrcMac 00:00:c0:a8:03:14 matchDstMac 00:00:c0:a8:04:14
-134 ps_67_2 00:00:00:00:00:00:04:14 1 00:00:00:00:00:00:03:14 1 matchSrcMac 00:00:c0:a8:04:14 matchDstMac 00:00:c0:a8:03:14
-135 ps_68_1 00:00:00:00:00:00:03:15 1 00:00:00:00:00:00:04:15 1 matchSrcMac 00:00:c0:a8:03:15 matchDstMac 00:00:c0:a8:04:15
-136 ps_68_2 00:00:00:00:00:00:04:15 1 00:00:00:00:00:00:03:15 1 matchSrcMac 00:00:c0:a8:04:15 matchDstMac 00:00:c0:a8:03:15
-137 ps_69_1 00:00:00:00:00:00:03:16 1 00:00:00:00:00:00:04:16 1 matchSrcMac 00:00:c0:a8:03:16 matchDstMac 00:00:c0:a8:04:16
-138 ps_69_2 00:00:00:00:00:00:04:16 1 00:00:00:00:00:00:03:16 1 matchSrcMac 00:00:c0:a8:04:16 matchDstMac 00:00:c0:a8:03:16
-139 ps_70_1 00:00:00:00:00:00:03:17 1 00:00:00:00:00:00:04:17 1 matchSrcMac 00:00:c0:a8:03:17 matchDstMac 00:00:c0:a8:04:17
-140 ps_70_2 00:00:00:00:00:00:04:17 1 00:00:00:00:00:00:03:17 1 matchSrcMac 00:00:c0:a8:04:17 matchDstMac 00:00:c0:a8:03:17
-141 ps_71_1 00:00:00:00:00:00:03:18 1 00:00:00:00:00:00:04:18 1 matchSrcMac 00:00:c0:a8:03:18 matchDstMac 00:00:c0:a8:04:18
-142 ps_71_2 00:00:00:00:00:00:04:18 1 00:00:00:00:00:00:03:18 1 matchSrcMac 00:00:c0:a8:04:18 matchDstMac 00:00:c0:a8:03:18
-143 ps_72_1 00:00:00:00:00:00:03:19 1 00:00:00:00:00:00:04:19 1 matchSrcMac 00:00:c0:a8:03:19 matchDstMac 00:00:c0:a8:04:19
-144 ps_72_2 00:00:00:00:00:00:04:19 1 00:00:00:00:00:00:03:19 1 matchSrcMac 00:00:c0:a8:04:19 matchDstMac 00:00:c0:a8:03:19
diff --git a/scripts/generate_flows.py b/scripts/generate_flows.py
deleted file mode 100755
index 492b8cb..0000000
--- a/scripts/generate_flows.py
+++ /dev/null
@@ -1,90 +0,0 @@
-#! /usr/bin/env python
-# -*- Mode: python; py-indent-offset: 4; tab-width: 8; indent-tabs-mode: t; -*-
-
-#
-# A script for generating a number of flows.
-#
-# The output of the script should be saved to a file, and the flows from
-# that file should be added by the following command:
-#
-#   web/add_flow.py -f filename
-# 
-# NOTE: Currently, some of the parameters fo the flows are hard-coded,
-# and all flows are between same source and destination DPID and ports
-# (differentiated by different matchSrcMac and matchDstMac).
-#
-
-import copy
-import pprint
-import os
-import sys
-import subprocess
-import json
-import argparse
-import io
-import time
-
-## Global Var ##
-
-DEBUG=0
-pp = pprint.PrettyPrinter(indent=4)
-
-## Worker Functions ##
-def log_error(txt):
-  print '%s' % (txt)
-
-def debug(txt):
-  if DEBUG:
-    print '%s' % (txt)
-
-
-if __name__ == "__main__":
-  usage_msg = "Generate a number of flows by using a pre-defined template.\n"
-  usage_msg = usage_msg + "\n"
-  usage_msg = usage_msg + "NOTE: This script is work-in-progress. Currently all flows are within same\n"
-  usage_msg = usage_msg + "pair of switch ports and contain auto-generated MAC-based matching conditions.\n"
-  usage_msg = usage_msg + "\n"
-  usage_msg = usage_msg + "Usage: %s <begin-flow-id> <end-flow-id>\n" % (sys.argv[0])
-  usage_msg = usage_msg + "\n"
-  usage_msg = usage_msg + "    The output should be saved to a file, and the flows should be installed\n"
-  usage_msg = usage_msg + "    by using the command './add_flow.py -f filename'\n"
-
-
-  # app.debug = False;
-
-  # Usage info
-  if len(sys.argv) > 1 and (sys.argv[1] == "-h" or sys.argv[1] == "--help"):
-    print(usage_msg)
-    exit(0)
-
-  # Check arguments
-  if len(sys.argv) < 3:
-    log_error(usage_msg)
-    exit(1)
-
-  # Extract the arguments
-  begin_flow_id = int(sys.argv[1], 0)
-  end_flow_id = int(sys.argv[2], 0)
-  if begin_flow_id > end_flow_id:
-    log_error(usage_msg)
-    exit(1)
-
-  #
-  # Do the work
-  #
-  # NOTE: Currently, up to 65536 flows are supported.
-  # More flows can be supported by iterating by, say, iterating over some of
-  # the other bytes of the autogenereated source/destination MAC addresses.
-  #
-  flow_id = begin_flow_id
-  idx = 0
-  while flow_id <= end_flow_id:
-    mac3 = idx / 255
-    mac4 = idx % 255
-    str_mac3 = "%0.2x" % mac3
-    str_mac4 = "%0.2x" % mac4
-    src_mac = "00:00:" + str_mac3 + ":" + str_mac4 + ":00:00";
-    dst_mac = "00:01:" + str_mac3 + ":" + str_mac4 + ":00:00";
-    print "%s FOOBAR 00:00:00:00:00:00:01:01 1 00:00:00:00:00:00:01:0b 1 matchSrcMac %s matchDstMac %s" % (flow_id, src_mac, dst_mac)
-    flow_id = flow_id + 1
-    idx = idx + 1
diff --git a/scripts/get_flow.py b/scripts/get_flow.py
deleted file mode 100755
index bdf89df..0000000
--- a/scripts/get_flow.py
+++ /dev/null
@@ -1,301 +0,0 @@
-#! /usr/bin/env python
-# -*- Mode: python; py-indent-offset: 4; tab-width: 8; indent-tabs-mode: t; -*-
-
-import pprint
-import os
-import sys
-import subprocess
-import json
-import argparse
-import io
-import time
-
-from flask import Flask, json, Response, render_template, make_response, request
-
-## Global Var ##
-ControllerIP="127.0.0.1"
-ControllerPort=8080
-
-DEBUG=0
-pp = pprint.PrettyPrinter(indent=4)
-
-app = Flask(__name__)
-
-## Worker Functions ##
-def log_error(txt):
-  print '%s' % (txt)
-
-def debug(txt):
-  if DEBUG:
-    print '%s' % (txt)
-
-# @app.route("/wm/onos/flows/get/<flow-id>/json")
-# Sample output:
-# {"flowId":{"value":"0x5"},"installerId":{"value":"FOOBAR"},"dataPath":{"srcPort":{"dpid":{"value":"00:00:00:00:00:00:00:01"},"port":{"value":0}},"dstPort":{"dpid":{"value":"00:00:00:00:00:00:00:02"},"port":{"value":0}},"flowEntries":[{"flowEntryId":"0x1389","flowEntryMatch":null,"flowEntryActions":null,"dpid":{"value":"00:00:00:00:00:00:00:01"},"inPort":{"value":0},"outPort":{"value":1},"flowEntryUserState":"FE_USER_DELETE","flowEntrySwitchState":"FE_SWITCH_NOT_UPDATED","flowEntryErrorState":null},{"flowEntryId":"0x138a","flowEntryMatch":null,"flowEntryActions":null,"dpid":{"value":"00:00:00:00:00:00:00:02"},"inPort":{"value":9},"outPort":{"value":0},"flowEntryUserState":"FE_USER_DELETE","flowEntrySwitchState":"FE_SWITCH_NOT_UPDATED","flowEntryErrorState":null}]}}
-
-def parse_match(match):
-  result = []
-
-  inPort = match['inPort']
-  matchInPort = match['matchInPort']
-  srcMac = match['srcMac']
-  matchSrcMac = match['matchSrcMac']
-  dstMac = match['dstMac']
-  matchDstMac = match['matchDstMac']
-  ethernetFrameType = match['ethernetFrameType']
-  matchEthernetFrameType = match['matchEthernetFrameType']
-  vlanId = match['vlanId']
-  matchVlanId = match['matchVlanId']
-  vlanPriority = match['vlanPriority']
-  matchVlanPriority = match['matchVlanPriority']
-  srcIPv4Net = match['srcIPv4Net']
-  matchSrcIPv4Net = match['matchSrcIPv4Net']
-  dstIPv4Net = match['dstIPv4Net']
-  matchDstIPv4Net = match['matchDstIPv4Net']
-  ipProto = match['ipProto']
-  matchIpProto = match['matchIpProto']
-  ipToS = match['ipToS']
-  matchIpToS = match['matchIpToS']
-  srcTcpUdpPort = match['srcTcpUdpPort']
-  matchSrcTcpUdpPort = match['matchSrcTcpUdpPort']
-  dstTcpUdpPort = match['dstTcpUdpPort']
-  matchDstTcpUdpPort = match['matchDstTcpUdpPort']
-  if matchInPort == True:
-    r = "inPort: %s" % inPort['value']
-    result.append(r)
-  if matchSrcMac == True:
-    r = "srcMac: %s" % srcMac['value']
-    result.append(r)
-  if matchDstMac == True:
-    r = "dstMac: %s" % dstMac['value']
-    result.append(r)
-  if matchEthernetFrameType == True:
-    r = "ethernetFrameType: %s" % hex(ethernetFrameType)
-    result.append(r)
-  if matchVlanId == True:
-    r = "vlanId: %s" % vlanId
-    result.append(r)
-  if matchVlanPriority == True:
-    r = "vlanPriority: %s" % vlanPriority
-    result.append(r)
-  if matchSrcIPv4Net == True:
-    r = "srcIPv4Net: %s" % srcIPv4Net['value']
-    result.append(r)
-  if matchDstIPv4Net == True:
-    r = "dstIPv4Net: %s" % dstIPv4Net['value']
-    result.append(r)
-  if matchIpProto == True:
-    r = "ipProto: %s" % ipProto
-    result.append(r)
-  if matchIpToS == True:
-    r = "ipToS: %s" % ipToS
-    result.append(r)
-  if matchSrcTcpUdpPort == True:
-    r = "srcTcpUdpPort: %s" % srcTcpUdpPort
-    result.append(r)
-  if matchDstTcpUdpPort == True:
-    r = "dstTcpUdpPort: %s" % dstTcpUdpPort
-    result.append(r)
-
-  return result
-
-
-def parse_actions(actions):
-  result = []
-  for a in actions:
-    actionType = a['actionType']
-    if actionType == "ACTION_OUTPUT":
-      port = a['actionOutput']['port']['value']
-      maxLen = a['actionOutput']['maxLen']
-      r = "actionType: %s port: %s maxLen: %s" % (actionType, port, maxLen)
-      result.append(r)
-    if actionType == "ACTION_SET_VLAN_VID":
-      vlanId = a['actionSetVlanId']['vlanId']
-      r = "actionType: %s vlanId: %s" % (actionType, vlanId)
-      result.append(r)
-    if actionType == "ACTION_SET_VLAN_PCP":
-      vlanPriority = a['actionSetVlanPriority']['vlanPriority']
-      r = "actionType: %s vlanPriority: %s" % (actionType, vlanPriority)
-      result.append(r)
-    if actionType == "ACTION_STRIP_VLAN":
-      stripVlan = a['actionStripVlan']['stripVlan']
-      r = "actionType: %s stripVlan: %s" % (actionType, stripVlan)
-      result.append(r)
-    if actionType == "ACTION_SET_DL_SRC":
-      setEthernetSrcAddr = a['actionSetEthernetSrcAddr']['addr']['value']
-      r = "actionType: %s setEthernetSrcAddr: %s" % (actionType, setEthernetSrcAddr)
-      result.append(r)
-    if actionType == "ACTION_SET_DL_DST":
-      setEthernetDstAddr = a['actionSetEthernetDstAddr']['addr']['value']
-      r = "actionType: %s setEthernetDstAddr: %s" % (actionType, setEthernetDstAddr)
-      result.append(r)
-    if actionType == "ACTION_SET_NW_SRC":
-      setIPv4SrcAddr = a['actionSetIPv4SrcAddr']['addr']['value']
-      r = "actionType: %s setIPv4SrcAddr: %s" % (actionType, setIPv4SrcAddr)
-      result.append(r)
-    if actionType == "ACTION_SET_NW_DST":
-      setIPv4DstAddr = a['actionSetIPv4DstAddr']['addr']['value']
-      r = "actionType: %s setIPv4DstAddr: %s" % (actionType, setIPv4DstAddr)
-      result.append(r)
-    if actionType == "ACTION_SET_NW_TOS":
-      setIpToS = a['actionSetIpToS']['ipToS']
-      r = "actionType: %s setIpToS: %s" % (actionType, setIpToS)
-      result.append(r)
-    if actionType == "ACTION_SET_TP_SRC":
-      setTcpUdpSrcPort = a['actionSetTcpUdpSrcPort']['port']
-      r = "actionType: %s setTcpUdpSrcPort: %s" % (actionType, setTcpUdpSrcPort)
-      result.append(r)
-    if actionType == "ACTION_SET_TP_DST":
-      setTcpUdpDstPort = a['actionSetTcpUdpDstPort']['port']
-      r = "actionType: %s setTcpUdpDstPort: %s" % (actionType, setTcpUdpDstPort)
-      result.append(r)
-    if actionType == "ACTION_ENQUEUE":
-      port = a['actionEnqueue']['port']['value']
-      queueId = a['actionEnqueue']['queueId']
-      r = "actionType: %s port: %s queueId: %s" % (actionType, port, queueId)
-      result.append(r)
-
-  return result
-
-
-def print_flow_path(parsedResult):
-  flowId = parsedResult['flowId']['value']
-  installerId = parsedResult['installerId']['value']
-  flowPathType = parsedResult['flowPathType']
-  flowPathUserState = parsedResult['flowPathUserState']
-  flowPathFlags = parsedResult['flowPathFlags']['flags']
-  idleTimeout = parsedResult['idleTimeout']
-  hardTimeout = parsedResult['hardTimeout']
-  priority = parsedResult['priority']
-  srcSwitch = parsedResult['dataPath']['srcPort']['dpid']['value']
-  srcPort = parsedResult['dataPath']['srcPort']['port']['value']
-  dstSwitch = parsedResult['dataPath']['dstPort']['dpid']['value']
-  dstPort = parsedResult['dataPath']['dstPort']['port']['value']
-  match = parsedResult['flowEntryMatch'];
-  actions = parsedResult['flowEntryActions']['actions']
-
-  flowPathFlagsStr = ""
-  if (flowPathFlags & 0x1):
-    if flowPathFlagsStr:
-      flowPathFlagsStr += ","
-    flowPathFlagsStr += "DISCARD_FIRST_HOP_ENTRY"
-  if (flowPathFlags & 0x2):
-    if flowPathFlagsStr:
-      flowPathFlagsStr += ","
-    flowPathFlagsStr += "KEEP_ONLY_FIRST_HOP_ENTRY"
-
-  print "FlowPath: (flowId = %s installerId = %s flowPathType = %s flowPathUserState = %s flowPathFlags = 0x%x(%s) src = %s/%s dst = %s/%s idleTimeout = %s hardTimeout = %s priority = %s)" % (flowId, installerId, flowPathType, flowPathUserState, flowPathFlags, flowPathFlagsStr, srcSwitch, srcPort, dstSwitch, dstPort, idleTimeout, hardTimeout, priority)
-
-  #
-  # Print the common match conditions
-  #
-  if match == None:
-    print "   Match: %s" % (match)
-  else:
-    parsedMatch = parse_match(match)
-    for l in parsedMatch:
-      print "    %s" % l
-
-  #
-  # Print the actions
-  #
-  parsedActions = parse_actions(actions)
-  for l in parsedActions:
-    print "    %s" % l
-
-  #
-  # Print each Flow Entry
-  #
-  for f in parsedResult['dataPath']['flowEntries']:
-    flowEntryId = f['flowEntryId']
-    idleTimeout = f['idleTimeout']
-    hardTimeout = f['hardTimeout']
-    priority = f['priority']
-    dpid = f['dpid']['value']
-    userState = f['flowEntryUserState']
-    switchState = f['flowEntrySwitchState']
-    match = f['flowEntryMatch'];
-    actions = f['flowEntryActions']['actions']
-
-    print "  FlowEntry: (%s, %s, %s, %s, idleTimeout = %s, hardTimeout = %s, priority = %s)" % (flowEntryId, dpid, userState, switchState, idleTimeout, hardTimeout, priority)
-
-    #
-    # Print the match conditions
-    #
-    if match == None:
-      print "   Match: %s" % (match)
-    else:
-      parsedMatch = parse_match(match)
-      for l in parsedMatch:
-	print "    %s" % l
-    #
-    # Print the actions
-    #
-    parsedActions = parse_actions(actions)
-    for l in parsedActions:
-      print "    %s" % l
-
-
-def get_flow_path(flow_id):
-  try:
-    command = "curl -s \"http://%s:%s/wm/onos/flows/get/%s/json\"" % (ControllerIP, ControllerPort, flow_id)
-    debug("get_flow_path %s" % command)
-
-    result = os.popen(command).read()
-    debug("result %s" % result)
-    if len(result) == 0:
-      print "No Flow found"
-      return;
-
-    parsedResult = json.loads(result)
-    debug("parsed %s" % parsedResult)
-  except:
-    log_error("Controller IF has issue")
-    exit(1)
-
-  print_flow_path(parsedResult)
-
-
-def get_all_flow_paths():
-  try:
-    command = "curl -s \"http://%s:%s/wm/onos/flows/getall/json\"" % (ControllerIP, ControllerPort)
-    debug("get_all_flow_paths %s" % command)
-
-    result = os.popen(command).read()
-    debug("result %s" % result)
-    if len(result) == 0:
-	print "No Flows found"
-	return;
-
-    parsedResult = json.loads(result)
-    debug("parsed %s" % parsedResult)
-  except:
-    log_error("Controller IF has issue")
-    exit(1)
-
-  for flowPath in parsedResult:
-    print_flow_path(flowPath)
-
-if __name__ == "__main__":
-  usage_msg1 = "Usage:\n"
-  usage_msg2 = "%s <flow_id> : Print flow with Flow ID of <flow_id>\n" % (sys.argv[0])
-  usage_msg3 = "                   all    : Print all flows\n"
-  usage_msg = usage_msg1 + usage_msg2 + usage_msg3;
-
-  # app.debug = False;
-
-  # Usage info
-  if len(sys.argv) > 1 and (sys.argv[1] == "-h" or sys.argv[1] == "--help"):
-    print(usage_msg)
-    exit(0)
-
-  # Check arguments
-  if len(sys.argv) < 2:
-    log_error(usage_msg)
-    exit(1)
-
-  # Do the work
-  if sys.argv[1] == "all":
-    get_all_flow_paths()
-  else:
-    get_flow_path(sys.argv[1])
diff --git a/scripts/get_network_graph.py b/scripts/get_network_graph.py
deleted file mode 100755
index d7df070..0000000
--- a/scripts/get_network_graph.py
+++ /dev/null
@@ -1,117 +0,0 @@
-#! /usr/bin/env python
-# -*- Mode: python; py-indent-offset: 4; tab-width: 8; indent-tabs-mode: t; -*-
-
-#
-# Get Network Graph Information:
-#  - Switches
-#  - Links
-#
-
-import pprint
-import os
-import sys
-import subprocess
-import json
-import collections
-import argparse
-import io
-import time
-
-from flask import Flask, json, Response, render_template, make_response, request
-
-## Global Var ##
-ControllerIP="127.0.0.1"
-ControllerPort=8080
-
-DEBUG=0
-pp = pprint.PrettyPrinter(indent=4)
-
-app = Flask(__name__)
-
-## Worker Functions ##
-def log_error(txt):
-  print '%s' % (txt)
-
-def debug(txt):
-  if DEBUG:
-    print '%s' % (txt)
-
-# @app.route("/wm/onos/topology/links ")
-# @app.route("/wm/onos/topology/switches ")
-# Sample output:
-
-def print_parsed_result(parsedResult):
-  print '%s' % (parsedResult),
-
-def get_network_switches():
-  try:
-    command = "curl -s \"http://%s:%s/wm/onos/topology/switches\"" % (ControllerIP, ControllerPort)
-    debug("get_network_switches %s" % command)
-
-    result = os.popen(command).read()
-    debug("result %s" % result)
-    if len(result) == 0:
-      print "No Switches found"
-      return;
-
-    # parsedResult = result
-    # parsedResult = json.loads(result)
-    parsedResult = json.dumps(json.loads(result), indent=4)
-    debug("parsed %s" % parsedResult)
-  except:
-    log_error("Controller IF has issue")
-    exit(1)
-
-  print_parsed_result(parsedResult)
-
-def get_network_links():
-  try:
-    command = "curl -s \"http://%s:%s/wm/onos/topology/links\"" % (ControllerIP, ControllerPort)
-    debug("get_network_links %s" % command)
-
-    result = os.popen(command).read()
-    debug("result %s" % result)
-    if len(result) == 0:
-      print "No Links found"
-      return;
-
-    # parsedResult = result
-    # parsedResult = json.loads(result)
-    parsedResult = json.dumps(json.loads(result), indent=4)
-    debug("parsed %s" % parsedResult)
-  except:
-    log_error("Controller IF has issue")
-    exit(1)
-
-  print_parsed_result(parsedResult)
-
-
-if __name__ == "__main__":
-  usage_msg1 = "Usage:\n"
-  usage_msg2 = "%s <arguments> : Print network information\n" % (sys.argv[0])
-  usage_msg3 = "  Valid element names:\n"
-  usage_msg4 = "    all              : Print all network elements\n"
-  usage_msg5 = "    switches         : Print all switches and ports\n"
-  usage_msg6 = "    links            : Print all links\n"
-  usage_msg = usage_msg1 + usage_msg2 + usage_msg3 + usage_msg4 + usage_msg5
-  usage_msg = usage_msg + usage_msg6
-
-  # Usage info
-  if len(sys.argv) > 1 and (sys.argv[1] == "-h" or sys.argv[1] == "--help"):
-    print(usage_msg)
-    exit(0)
-
-  # Check arguments
-  if len(sys.argv) < 2:
-    log_error(usage_msg)
-    exit(1)
-
-  if (sys.argv[1] != "all" and sys.argv[1] != "switches" and sys.argv[1] != "links"):
-    log_error(usage_msg)
-    exit(1)
-
-  # Do the work
-  if (sys.argv[1] == "all" or sys.argv[1] == "switches"):
-    get_network_switches()
-  if (sys.argv[1] == "all" or sys.argv[1] == "links"):
-    get_network_links()
diff --git a/scripts/shortest_path.py b/scripts/shortest_path.py
deleted file mode 100755
index 805224b..0000000
--- a/scripts/shortest_path.py
+++ /dev/null
@@ -1,90 +0,0 @@
-#! /usr/bin/env python
-# -*- Mode: python; py-indent-offset: 4; tab-width: 8; indent-tabs-mode: t; -*-
-
-import pprint
-import os
-import sys
-import subprocess
-import json
-import argparse
-import io
-import time
-
-from flask import Flask, json, Response, render_template, make_response, request
-
-#
-# curl http://127.0.0.1:8080/wm/onos/topology/route/00:00:00:00:00:00:0a:01/1/00:00:00:00:00:00:0a:04/1/json
-#
-
-## Global Var ##
-ControllerIP="127.0.0.1"
-ControllerPort=8080
-
-DEBUG=0
-pp = pprint.PrettyPrinter(indent=4)
-
-app = Flask(__name__)
-
-## Worker Functions ##
-def log_error(txt):
-  print '%s' % (txt)
-
-def debug(txt):
-  if DEBUG:
-    print '%s' % (txt)
-
-# @app.route("/wm/onos/topology/route/<srcdpid>/<srcport>/<destdpid>/<destport>/json")
-#
-# Sample output:
-# {'dstPort': {'port': {'value': 0}, 'dpid': {'value': '00:00:00:00:00:00:00:02'}}, 'srcPort': {'port': {'value': 0}, 'dpid': {'value': '00:00:00:00:00:00:00:01'}}, 'flowEntries': [{'outPort': {'value': 1}, 'flowEntryErrorState': None, 'flowEntryMatch': None, 'flowEntryActions': None, 'inPort': {'value': 0}, 'flowEntryId': None, 'flowEntryUserState': 'FE_USER_UNKNOWN', 'dpid': {'value': '00:00:00:00:00:00:00:01'}, 'flowEntrySwitchState': 'FE_SWITCH_UNKNOWN'}, {'outPort': {'value': 0}, 'flowEntryErrorState': None, 'flowEntryMatch': None, 'flowEntryActions': None, 'inPort': {'value': 9}, 'flowEntryId': None, 'flowEntryUserState': 'FE_USER_UNKNOWN', 'dpid': {'value': '00:00:00:00:00:00:00:02'}, 'flowEntrySwitchState': 'FE_SWITCH_UNKNOWN'}]}
-#
-def shortest_path(v1, p1, v2, p2):
-  try:
-    command = "curl -s http://%s:%s/wm/onos/topology/route/%s/%s/%s/%s/json" % (ControllerIP, ControllerPort, v1, p1, v2, p2)
-    debug("shortest_path %s" % command)
-
-    result = os.popen(command).read()
-    debug("result %s" % result)
-
-    if len(result) == 0:
-	print "No Path found"
-	return;
-
-    parsedResult = json.loads(result)
-    debug("parsed %s" % parsedResult)
-  except:
-    log_error("Controller IF has issue")
-    exit(1)
-
-  srcSwitch = parsedResult['srcPort']['dpid']['value'];
-  srcPort = parsedResult['srcPort']['port']['value'];
-  dstSwitch = parsedResult['dstPort']['dpid']['value'];
-  dstPort = parsedResult['dstPort']['port']['value'];
-
-  print "DataPath: (src = %s/%s dst = %s/%s)" % (srcSwitch, srcPort, dstSwitch, dstPort);
-
-  for f in parsedResult['flowEntries']:
-    inPort = f['inPort']['value'];
-    outPort = f['outPort']['value'];
-    dpid = f['dpid']['value']
-    print "  FlowEntry: (%s, %s, %s)" % (inPort, dpid, outPort)
-
-
-if __name__ == "__main__":
-  usage_msg = "Compute the shortest path between two switch ports in the Network MAP\n"
-  usage_msg = usage_msg + "Usage: %s <src-dpid> <src-port> <dest-dpid> <dest-port>" % (sys.argv[0])
-
-  # app.debug = False;
-
-  # Usage info
-  if len(sys.argv) > 1 and (sys.argv[1] == "-h" or sys.argv[1] == "--help"):
-    print(usage_msg)
-    exit(0)
-
-  # Check arguments
-  if len(sys.argv) < 5:
-    log_error(usage_msg)
-    exit(1)
-
-  # Do the work
-  shortest_path(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4]);
