diff --git a/docs/cfm.md b/docs/cfm.md
index edb9014..7c7b791 100644
--- a/docs/cfm.md
+++ b/docs/cfm.md
@@ -1,38 +1,37 @@
 # Configuring CFM
-This guide describes how to configure CFM monitoring for an E-Line generated in a local E-CORD POD. 
-This monitoring will then be viewable in the “Delay and Jitter” link in the CORD UI. 
-It assumes that your POD already has a global E-CORD node and at least 2 local E-CORD instances, with each local E-CORD having a CFM capable device (e.g. Microsemi EA1000) connected.  
-It is assumed that these devices are already detected and connected in ONOS as per [the guide](https://guide.opencord.org/profiles/ecord/installation_guide.html]).
+This guide describes how to configure CFM monitoring for an E-Line generated in a local E-CORD POD. This monitoring will then be viewable in the “Delay and Jitter” link in the CORD UI. It assumes that your POD already has a global E-CORD node and at least 2 local E-CORD instances, with each local E-CORD having a CFM capable device (e.g. Microsemi EA1000) connected.It is assumed that these devices are already detected and connected in ONOS as per [the E-CORD installation guide](https://guide.opencord.org/profiles/ecord/installation_guide.html]).
 
-The guide acceses an ONOS_CORD instance at onos-cord, which has the ssh port 8102 and the web port 8182. Change the IP adddresses to your own, and if these ports have been forwarded for some reason on your setup, make sure to accommodate as necessary.
+The guide acceses an ONOS_CORD instance at `onos-cord`, which has the ssh port 8102 and the web port 8182. Change the IP adddresses to your own, and if these ports have been forwarded for some reason on your setup, make sure to accommodate as necessary.
 
 This guide describes a minimal CFM setup, with a single MD (maintenance domain) and MA (maintenance association), two MEPs (measurement endpoints), and one DM (delay measurement).
 
 You can also find a [Postman](https://www.getpostman.com/) JSON collection that contains the JSON necessary to setup CFM under `cord/orchestration/profiles/ecord/examples/`.
 
 Detailed information on the CFM application itself can be found on the [ONOS Wiki](https://wiki.onosproject.org/display/ONOS/Layer+2+Monitoring+with+CFM+and+Services+OAM).
+
 ## Creating an MD
-Post the following JSON file to `onos-cord:8182/onos/cfm/md/` on your local instances. Make sure you have a header with basic authorization set to username “onos” and password “rocks”.
+Post the following JSON file to `onos-cord:8182/onos/cfm/md/` on your local instances. Make sure you have a header with basic authorization set to username “onos” and password “rocks”, as this will be required for this and all future JSON requests in this guide.
 
-NOTE: MDs and MAs are stored in a distributed store within the same cluster. In our testing setup, ONOS_CORD and ONOS_Fabric exist on two separate clusters. If you see the MD on the ONOS_Fabric (i.e. the MD shows up after running cfm-md-list) after instantiating it on the first instance, do not push the JSON on the second nodd. Otherwise, feel free to push.
+NOTE: MDs and MAs are stored in a distributed store within the same cluster. In our testing setup, ONOS_CORD and ONOS_Fabric exist on two separate clusters. If you see the MD on the ONOS_Fabric (i.e. the MD shows up after running cfm-md-list) after instantiating it on the first local node, do not push the JSON on the second node. Otherwise, feel free to push on the second node.
 
-If you are creating more than one MD, they must have different mdNumericIds. Be aware that devices will only be able to take delay measurements from those on the same MD.
+If you are creating more than one MD, they must have different `mdNumericId`s. Be aware that devices will only be able to take delay measurements from others on the same MD.
 
 ```json
 {"md": {
-    "mdName": "Microsemi",
+    "mdName": "onf",
     "mdNameType": "CHARACTERSTRING",
     "mdLevel": "LEVEL3",
     "mdNumericId": 1
    }
 }
 ```
+
 ## Creating an MA
-The MAs created should be a part of a pre-defined MD. We defined an MD called Microsemi, so we post the following JSON to `onos-cord:8182/onos/cfm/md/Microsemi/`.
+Created MAs should be a part of a pre-defined MD, and are associated with a particular VLAN ID, defined in the `vid-list`. We defined an MD called `onf`, so we post the following JSON to `onos-cord:8182/onos/cfm/md/onf/`.
 
 NOTE: MAs are also stored in a distributed store. See the previous note in “Setting up MDs” for possible consequences.
 
-If you are creating more than one MA, they must have different maNumericIds and vids. The `rmep-list` defines the list of MEP IDs that can be associated with this vlan, so if you need more than 2 MEPs you will need to add them to the `rmep-list` .
+If you are creating more than one MA, they must have different `maNumericId`s and `vid`s, while `component-id`s may be reused. The `rmep-list` defines the list of MEP IDs that can be associated with this vlan. We only have two MEPs here since we are monitoring an Eline. All MEPs an MA might use must be defined in the `rmep-list`, as changes made to the `rmep-list` after the MA has already been pushed to a device will not be reflected in that device's copy of the MA.
 
 ```json
 {
@@ -58,10 +57,11 @@
   }
 }
 ```
-## Creating a MEP
-A measurement endpoint (MEP) is associated with a Microsemi device, and one must be created for each one. A MEP can only be created for the device connected to the current local node, and must be associated with an MA. The MEP ID must already exist on that MA’s `rmep-list` and must not already be in use by another node.
 
-With our MD set to Microsemi, and MA set to ma-vlan-1, we post the following JSON to `onos-cord:8182/onos/cfm/md/Microsemi/ma/ma-vlan-1/mep`
+## Creating a MEP
+A measurement endpoint (MEP) is associated with a NETCONF device, and one must be created for each device. A MEP can only be created for the device connected to the current local node, and must be associated with an MA. The MEP ID must already exist on that MA’s `rmep-list` and must not already be in use by another device.
+
+With our MD set to onf, and MA set to ma-vlan-1, we post the following JSON to `onos-cord:8182/onos/cfm/md/onf/ma/ma-vlan-1/mep`
 
 ```json
 {
@@ -70,7 +70,7 @@
     "deviceId": "netconf:10.6.0.160:830",
     "port": 0,
     "direction": "DOWN_MEP",
-    "mdName": "Microsemi",
+    "mdName": "onf",
     "maName": "ma-vlan-1",
     "primary-vid": 1,
     "administrative-state": true,
@@ -80,16 +80,16 @@
 }
 ```
 
-Since we have 2 Microsemi devices, we will also need to post MEP creation JSON to our second local instance, making sure to change the `mepId` and `deviceId`. In our example, we defined two MEP IDs, 10 and 20, to be used with our first and second local nodes. Both MEPs must be set up correctly in order to create a delay measurement (DM).
+Since we have 2 Microsemi devices, we will also need to post MEP creation JSON to our second local node, making sure to change the `mepId` and `deviceId`. In our example, we defined two MEP IDs, 10 and 20, to be used with our first and second local nodes. Both MEPs must be set up correctly in order to create a delay measurement (DM).
 
 ## Creating a DM
-Check the `remote_mep_state` of your created meps to ensure that they have a value of `RMEP_OK` before creating delay measurements. You can do so by performing a GET; in our case, we would perform a GET on `onos-cord:8182/onos/cfm/md/Microsemi/ma/ma-vlan-1/mep/10` on our first local instance, and on `onos-cord:8182/onos/cfm/md/Microsemi/ma/ma-vlan-1/mep/20` on our second local instance.
+Check the `remote_mep_state` of your created meps to ensure that they have a value of `RMEP_OK` before creating delay measurements. You can do so by performing a GET; in our case, we would perform a GET on `onos-cord:8182/onos/cfm/md/onf/ma/ma-vlan-1/mep/10` on our first local node, and on `onos-cord:8182/onos/cfm/md/onf/ma/ma-vlan-1/mep/20` on our second local node.
 
 DMs are associated with a single MEP, and a maximum of 2 can exist on a single MEP.
 
 IMPORTANT: The `measurementsEnabled` in the sample JSON below are required for the CFM stat UI to function properly.
 
-To create a DM on our first local instance, the following JSON is submitted by POST to `onos-cord:8182/onos/cfm/md/Microsemi/ma/ma-vlan-1/mep/10`. Notice that the remoteMepId is set to 20 because we are trying to get the delay measurement to 20 from 10.
+To create a DM on our first local instance, the following JSON is submitted by POST to `onos-cord:8182/onos/cfm/md/onf/ma/ma-vlan-1/mep/10`. Notice that the remoteMepId is set to 20 because we are trying to get the delay measurement to 20 from 10.
 
 ```json
 {
