implemented PATCH, HO, SCELLADD, XICIC
diff --git a/src/main/java/org.onosproject.xran/entities/RnibLink.java b/src/main/java/org.onosproject.xran/entities/RnibLink.java
index 8af1644..9b024b9 100644
--- a/src/main/java/org.onosproject.xran/entities/RnibLink.java
+++ b/src/main/java/org.onosproject.xran/entities/RnibLink.java
@@ -17,6 +17,7 @@
 package org.onosproject.xran.entities;
 
 import com.fasterxml.jackson.databind.JsonNode;
+import com.google.common.collect.Lists;
 import org.onosproject.xran.codecs.api.*;
 import org.onosproject.xran.codecs.pdu.PDCPMeasReportPerUe;
 import org.onosproject.xran.codecs.pdu.RRMConfig;
@@ -65,7 +66,11 @@
 
         linkId = LinkId.valueOf(cell, ue);
 
-        setDefaultRRMConf();
+        rrmParameters = new RRMConfig();
+        RRMConfig.Crnti crnti = new RRMConfig.Crnti();
+        crnti.addCRNTI(linkId.getUe().getRanId());
+        rrmParameters.setCrnti(crnti);
+        rrmParameters.setEcgi(linkId.getEcgi());
     }
 
     public Timer getTimer() {
@@ -133,70 +138,56 @@
 
     public void modifyRrmParameters(JsonNode rrmConfigNode) {
         {
-            JsonNode start_prb_dl = rrmConfigNode.get("start_prb_dl");
-            if (start_prb_dl != null) {
+            JsonNode start_prb_dl = rrmConfigNode.path("start_prb_dl");
+            if (!start_prb_dl.isMissingNode()) {
                 RRMConfig.StartPrbDl startPrbDl = new RRMConfig.StartPrbDl();
-                if (start_prb_dl.isArray()) {
-                    if (rrmParameters.getStartPrbDl().getSeqOf().size() == start_prb_dl.size()) {
-                        List<BerInteger> collect = Stream.of(start_prb_dl)
-                                .map(val -> new BerInteger(val.asInt()))
-                                .collect(Collectors.toList());
-                        startPrbDl.setSeqOf(collect);
-                    }
-                }
+
+                List<BerInteger> collect = Lists.newArrayList();
+                collect.add(new BerInteger(start_prb_dl.asInt()));
+                startPrbDl.setSeqOf(collect);
+
                 rrmParameters.setStartPrbDl(startPrbDl);
             }
         }
 
         {
             JsonNode end_prb_dl = rrmConfigNode.get("end_prb_dl");
-            if (end_prb_dl != null) {
+            if (!end_prb_dl.isMissingNode()) {
                 RRMConfig.EndPrbDl endPrbDl = new RRMConfig.EndPrbDl();
-                if (end_prb_dl.isArray()) {
-                    if (rrmParameters.getEndPrbDl().getSeqOf().size() == end_prb_dl.size()) {
-                        List<BerInteger> collect = Stream.of(end_prb_dl)
-                                .map(val -> new BerInteger(val.asInt()))
-                                .collect(Collectors.toList());
-                        endPrbDl.setSeqOf(collect);
-                    }
-                }
+
+                List<BerInteger> collect = Lists.newArrayList();
+                collect.add(new BerInteger(end_prb_dl.asInt()));
+                endPrbDl.setSeqOf(collect);
+
                 rrmParameters.setEndPrbDl(endPrbDl);
             }
         }
 
         {
             JsonNode start_prb_ul = rrmConfigNode.get("start_prb_ul");
-            if (start_prb_ul != null) {
+            if (!start_prb_ul.isMissingNode()) {
                 RRMConfig.StartPrbUl startPrbUl = new RRMConfig.StartPrbUl();
-                if (start_prb_ul.isArray()) {
-                    if (rrmParameters.getStartPrbUl().getSeqOf().size() == start_prb_ul.size()) {
-                        List<BerInteger> collect = Stream.of(start_prb_ul)
-                                .map(val -> new BerInteger(val.asInt()))
-                                .collect(Collectors.toList());
-                        startPrbUl.setSeqOf(collect);
-                    }
-                }
+
+                List<BerInteger> collect = Lists.newArrayList();
+                collect.add(new BerInteger(start_prb_ul.asInt()));
+                startPrbUl.setSeqOf(collect);
+
                 rrmParameters.setStartPrbUl(startPrbUl);
             }
         }
 
         {
             JsonNode end_prb_ul = rrmConfigNode.get("end_prb_ul");
-            if (end_prb_ul != null) {
+            if (!end_prb_ul.isMissingNode()) {
                 RRMConfig.EndPrbUl endPrbUl = new RRMConfig.EndPrbUl();
-                if (end_prb_ul.isArray()) {
-                    if (rrmParameters.getEndPrbUl().getSeqOf().size() == end_prb_ul.size()) {
-                        List<BerInteger> collect = Stream.of(end_prb_ul)
-                                .map(val -> new BerInteger(val.asInt()))
-                                .collect(Collectors.toList());
-                        endPrbUl.setSeqOf(collect);
-                    }
-                }
+
+                List<BerInteger> collect = Lists.newArrayList();
+                collect.add(new BerInteger(end_prb_ul.asInt()));
+                endPrbUl.setSeqOf(collect);
+
                 rrmParameters.setEndPrbUl(endPrbUl);
             }
         }
-
-        // TODO
     }
 
     public PDCPThroughput getPdcpThroughput() {
@@ -223,50 +214,6 @@
         this.resourceUsage = resourceUsage;
     }
 
-    private void setDefaultRRMConf() {
-        rrmParameters = new RRMConfig();
-
-        RRMConfig.Crnti crnti = new RRMConfig.Crnti();
-        crnti.addCRNTI(linkId.getUe().getRanId());
-
-        rrmParameters.setCrnti(crnti);
-
-        rrmParameters.setEcgi(linkId.getEcgi());
-
-        RRMConfig.StartPrbDl startPrbDl = new RRMConfig.StartPrbDl();
-        startPrbDl.addBerInteger(new BerInteger(0));
-        startPrbDl.addBerInteger(new BerInteger(50));
-
-        rrmParameters.setStartPrbDl(startPrbDl);
-
-        RRMConfig.StartPrbUl startPrbUl = new RRMConfig.StartPrbUl();
-        startPrbUl.addBerInteger(new BerInteger(50));
-        startPrbUl.addBerInteger(new BerInteger(100));
-
-        rrmParameters.setStartPrbUl(startPrbUl);
-
-        RRMConfig.EndPrbDl endPrbDl = new RRMConfig.EndPrbDl();
-        endPrbDl.addBerInteger(new BerInteger(50));
-        endPrbDl.addBerInteger(new BerInteger(100));
-
-        rrmParameters.setEndPrbDl(endPrbDl);
-
-        RRMConfig.EndPrbUl endPrbUl = new RRMConfig.EndPrbUl();
-        endPrbUl.addBerInteger(new BerInteger(50));
-        endPrbUl.addBerInteger(new BerInteger(100));
-
-        rrmParameters.setEndPrbUl(endPrbUl);
-
-        RRMConfig.SubframeBitmaskDl subframeBitmaskDl = new RRMConfig.SubframeBitmaskDl();
-        BerBitString berBitString = new BerBitString(new byte[]{(byte) 0xAA, (byte) 0x80}, 10);
-        BerBitString berBitString1 = new BerBitString(new byte[]{(byte) 0x55, (byte) 0x40}, 10);
-
-        subframeBitmaskDl.addBerBitString(berBitString);
-        subframeBitmaskDl.addBerBitString(berBitString1);
-
-        rrmParameters.setSubframeBitmaskDl(subframeBitmaskDl);
-    }
-
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
@@ -307,10 +254,16 @@
             }
         },
         // TODO: Add CA/DC
-        SERVING_SECONDARY("serving/secondary") {
+        SERVING_SECONDARY_CA("serving/secondary/ca") {
             @Override
             public String toString() {
-                return "\"serving/secondary\"";
+                return "\"serving/secondary/ca\"";
+            }
+        },
+        SERVING_SECONDARY_DC("serving/secondary/dc") {
+            @Override
+            public String toString() {
+                return "\"serving/secondary/dc\"";
             }
         },
         NON_SERVING("non-serving") {