added javadocs and comments
diff --git a/BUCK b/BUCK
index cce27ea..3cd9b30 100644
--- a/BUCK
+++ b/BUCK
@@ -11,7 +11,6 @@
     '//lib:netty-transport',
     '//core/common:onos-core-common',
     ':netty-transport-sctp',
-    ':jasn1',
 ]
 
 BUNDLES = [
@@ -20,7 +19,6 @@
 
 EXCLUDED_BUNDLES = [
     ':netty-transport-sctp',
-    ':jasn1',
 ]
 
 osgi_jar (
@@ -50,12 +48,3 @@
     maven_coords = 'io.netty:netty-transport-sctp:4.1.13.Final',
     visibility = [ 'PUBLIC' ],
 )
-
-remote_jar (
-    name = 'jasn1',
-    out = 'jasn1-1.8.1.jar',
-    url = 'mvn:org.openmuc:jasn1:jar:1.8.1',
-    sha1 = '4919f475a36f2389f58e7cad8d815d011acd2946',
-    maven_coords = 'org.openmuc:jasn1:1.8.1',
-    visibility = [ 'PUBLIC' ],
-)
diff --git a/src/main/java/org.onosproject.xran/XranStore.java b/src/main/java/org.onosproject.xran/XranStore.java
index 00984b9..63a1a02 100644
--- a/src/main/java/org.onosproject.xran/XranStore.java
+++ b/src/main/java/org.onosproject.xran/XranStore.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,7 +20,6 @@
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.onosproject.store.Store;
 import org.onosproject.xran.codecs.api.ECGI;
-import org.onosproject.xran.codecs.api.MMEUES1APID;
 import org.onosproject.xran.controller.XranController;
 import org.onosproject.xran.entities.RnibCell;
 import org.onosproject.xran.entities.RnibLink;
@@ -37,65 +36,215 @@
 
     // LINKS STORE
 
+    /**
+     * Get all active links.
+     *
+     * @return list of links
+     */
     List<RnibLink> getLinks();
 
-    List<RnibLink> getLinksByECGI(ECGI ecgi);
+    /**
+     * Get all links for that CELL based on ECGI.
+     *
+     * @param ecgi CELL ECGI
+     * @return list of links
+     */
+    List<RnibLink> getlinksbyecgi(ECGI ecgi);
 
-    List<RnibLink> getLinksByCellId(String eciHex);
+    /**
+     * Get all links for that CELL based on ECI.
+     *
+     * @param eciHex HEX string of ECI
+     * @return list of links
+     */
+    List<RnibLink> getlinksbycellid(String eciHex);
 
-    List<RnibLink> getLinksByUeId(long ueId);
+    /**
+     * Get all links for the UE based on UE ID.
+     *
+     * @param ueId UE ID
+     * @return list of links
+     */
+    List<RnibLink> getlinksbyueid(long ueId);
 
-    RnibLink getLinkBetweenCellIdUeId(String cellId, long ueId);
+    /**
+     * Get a link between a CELL and UE.
+     *
+     * @param cellId HEX string ECI
+     * @param ueId   UE id
+     * @return link
+     */
+    RnibLink getlinkbetweencellidueid(String cellId, long ueId);
 
+    /**
+     * Get a link between a CELL's ECGI and UE's id.
+     *
+     * @param ecgi CELL ECGI
+     * @param ueId UE id
+     * @return link
+     */
     RnibLink getLink(ECGI ecgi, Long ueId);
 
-    void modifyLinkRrmConf(RnibLink link, JsonNode rrmConf);
+    /**
+     * Modify specified link's RRM Configuration.
+     *
+     * @param link    LINK entity
+     * @param rrmConf json node of RRM Configuration
+     */
+    void modifylinkrrmconf(RnibLink link, JsonNode rrmConf);
 
+    /**
+     * Put new link to store.
+     *
+     * @param link LINK entity
+     */
     void storeLink(RnibLink link);
 
+    /**
+     * Remove link from store.
+     *
+     * @param link LINK entity
+     * @return true if remove succeeded
+     */
     boolean removeLink(LinkId link);
 
     // NODES
 
+    /**
+     * Get all CELLs and UEs.
+     *
+     * @return list of UEs and CELLs
+     */
     List<Object> getNodes();
 
-    List<Object> getCellNodes();
+    /**
+     * Get all CELLs.
+     *
+     * @return list of CELLs
+     */
+    List<Object> getcellnodes();
 
-    List<Object> getUeNodes();
+    /**
+     * Get all UEs.
+     *
+     * @return list of UEs
+     */
+    List<Object> getuenodes();
 
-    Object getByNodeId(String nodeId);
+    /**
+     * Get node by node id.
+     *
+     * @param nodeId HEX string ECI or UE id
+     * @return CELL or UE
+     */
+    Object getbynodeid(String nodeId);
 
     // CELL
 
+    /**
+     * Get cell based on HEX string ECI.
+     *
+     * @param eci HEX string ECI
+     * @return CELL if found
+     */
     RnibCell getCell(String eci);
 
+    /**
+     * Get cell based on ECGI.
+     *
+     * @param cellId CELL ECGI
+     * @return CELL if found
+     */
     RnibCell getCell(ECGI cellId);
 
-    void modifyCellRrmConf(RnibCell cell, JsonNode rrmConf) throws Exception;
+    /**
+     * Modify CELL's RRM Configuration.
+     *
+     * @param cell    CELL entity
+     * @param rrmConf json node of RRM Configuration
+     * @throws Exception exception
+     */
+    void modifycellrrmconf(RnibCell cell, JsonNode rrmConf) throws Exception;
 
+    /**
+     * Put new CELL to the store.
+     *
+     * @param cell CELL entity
+     */
     void storeCell(RnibCell cell);
 
+    /**
+     * Remove CELL from the store.
+     *
+     * @param ecgi CELL's ECGI
+     * @return ture if remove succeeded
+     */
     boolean removeCell(ECGI ecgi);
 
     // SLICE
 
+    /**
+     * Get SLICE based on SLICE id.
+     *
+     * @param sliceId SLICE id
+     * @return SLICE
+     */
     RnibSlice getSlice(long sliceId);
 
+    /**
+     * Put new SLICE to the store.
+     *
+     * @param attributes json node of SLICE attributes
+     * @return true if put succeeded
+     */
     boolean createSlice(ObjectNode attributes);
 
+    /**
+     * Remove SLICE based on SLICE id.
+     *
+     * @param sliceId SLICE id
+     * @return true if remove succeeded
+     */
     boolean removeCell(long sliceId);
 
     // CONTROLLER
 
+    /**
+     * Get the xran controller instance.
+     *
+     * @return xran controller
+     */
     XranController getController();
 
+    /**
+     * Set the xran controller instance.
+     *
+     * @param controller xran controller
+     */
     void setController(XranController controller);
 
     // UE
 
+    /**
+     * Get UE based on UE id.
+     *
+     * @param euId UE id
+     * @return UE entity
+     */
     RnibUe getUe(long euId);
 
+    /**
+     * Put new UE to store.
+     *
+     * @param ue UE entity
+     */
     void storeUe(RnibUe ue);
 
+    /**
+     * Remove UE from store.
+     *
+     * @param ueId UE id
+     * @return true if remove succeeded
+     */
     boolean removeUe(long ueId);
 }
diff --git a/src/main/java/org.onosproject.xran/annotations/Patch.java b/src/main/java/org.onosproject.xran/annotations/Patch.java
index 8058902..bc882c5 100644
--- a/src/main/java/org.onosproject.xran/annotations/Patch.java
+++ b/src/main/java/org.onosproject.xran/annotations/Patch.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-present Open Networking Laboratory
+ * Copyright 2016-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,7 +23,7 @@
 import java.lang.annotation.Target;
 
 /**
- * Created by dimitris on 7/21/17.
+ * PATCH interface for swagger.
  */
 @Target({ElementType.METHOD})
 @Retention(RetentionPolicy.RUNTIME)
diff --git a/src/main/java/org.onosproject.xran/annotations/package-info.java b/src/main/java/org.onosproject.xran/annotations/package-info.java
index e035cf2..0f85a05 100644
--- a/src/main/java/org.onosproject.xran/annotations/package-info.java
+++ b/src/main/java/org.onosproject.xran/annotations/package-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-present Open Networking Laboratory
+ * Copyright 2016-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/main/java/org.onosproject.xran/codecs/api/PCIARFCN.java b/src/main/java/org.onosproject.xran/codecs/api/PCIARFCN.java
index a02833d..7a44283 100644
--- a/src/main/java/org.onosproject.xran/codecs/api/PCIARFCN.java
+++ b/src/main/java/org.onosproject.xran/codecs/api/PCIARFCN.java
@@ -16,168 +16,172 @@
 
 public class PCIARFCN implements Serializable {
 
-	private static final long serialVersionUID = 1L;
+    public static final BerTag tag = new BerTag(BerTag.UNIVERSAL_CLASS, BerTag.CONSTRUCTED, 16);
+    private static final long serialVersionUID = 1L;
+    @JsonIgnore
+    public byte[] code = null;
+    private PhysCellId pci = null;
+    private ARFCNValue earfcnDl = null;
 
-	public static final BerTag tag = new BerTag(BerTag.UNIVERSAL_CLASS, BerTag.CONSTRUCTED, 16);
+    public PCIARFCN() {
+    }
 
-	@JsonIgnore
-	public byte[] code = null;
-	private PhysCellId pci = null;
-	private ARFCNValue earfcnDl = null;
-	
-	public PCIARFCN() {
-	}
+    public PCIARFCN(byte[] code) {
+        this.code = code;
+    }
 
-	public PCIARFCN(byte[] code) {
-		this.code = code;
-	}
+    public static PCIARFCN valueOf(PhysCellId pci, ARFCNValue arfcnValue) {
+        PCIARFCN pciarfcn = new PCIARFCN();
+        pciarfcn.setEarfcnDl(arfcnValue);
+        pciarfcn.setPci(pci);
+        return pciarfcn;
+    }
 
-	public void setPci(PhysCellId pci) {
-		this.pci = pci;
-	}
+    public PhysCellId getPci() {
+        return pci;
+    }
 
-	public PhysCellId getPci() {
-		return pci;
-	}
+    public void setPci(PhysCellId pci) {
+        this.pci = pci;
+    }
 
-	public void setEarfcnDl(ARFCNValue earfcnDl) {
-		this.earfcnDl = earfcnDl;
-	}
+    public ARFCNValue getEarfcnDl() {
+        return earfcnDl;
+    }
 
-	public ARFCNValue getEarfcnDl() {
-		return earfcnDl;
-	}
+    public void setEarfcnDl(ARFCNValue earfcnDl) {
+        this.earfcnDl = earfcnDl;
+    }
 
-	public int encode(BerByteArrayOutputStream os) throws IOException {
-		return encode(os, true);
-	}
+    public int encode(BerByteArrayOutputStream os) throws IOException {
+        return encode(os, true);
+    }
 
-	public int encode(BerByteArrayOutputStream os, boolean withTag) throws IOException {
+    public int encode(BerByteArrayOutputStream os, boolean withTag) throws IOException {
 
-		if (code != null) {
-			for (int i = code.length - 1; i >= 0; i--) {
-				os.write(code[i]);
-			}
-			if (withTag) {
-				return tag.encode(os) + code.length;
-			}
-			return code.length;
-		}
+        if (code != null) {
+            for (int i = code.length - 1; i >= 0; i--) {
+                os.write(code[i]);
+            }
+            if (withTag) {
+                return tag.encode(os) + code.length;
+            }
+            return code.length;
+        }
 
-		int codeLength = 0;
-		codeLength += earfcnDl.encode(os, false);
-		// write tag: CONTEXT_CLASS, PRIMITIVE, 1
-		os.write(0x81);
-		codeLength += 1;
-		
-		codeLength += pci.encode(os, false);
-		// write tag: CONTEXT_CLASS, PRIMITIVE, 0
-		os.write(0x80);
-		codeLength += 1;
-		
-		codeLength += BerLength.encodeLength(os, codeLength);
+        int codeLength = 0;
+        codeLength += earfcnDl.encode(os, false);
+        // write tag: CONTEXT_CLASS, PRIMITIVE, 1
+        os.write(0x81);
+        codeLength += 1;
 
-		if (withTag) {
-			codeLength += tag.encode(os);
-		}
+        codeLength += pci.encode(os, false);
+        // write tag: CONTEXT_CLASS, PRIMITIVE, 0
+        os.write(0x80);
+        codeLength += 1;
 
-		return codeLength;
+        codeLength += BerLength.encodeLength(os, codeLength);
 
-	}
+        if (withTag) {
+            codeLength += tag.encode(os);
+        }
 
-	public int decode(InputStream is) throws IOException {
-		return decode(is, true);
-	}
+        return codeLength;
 
-	public int decode(InputStream is, boolean withTag) throws IOException {
-		int codeLength = 0;
-		int subCodeLength = 0;
-		BerTag berTag = new BerTag();
+    }
 
-		if (withTag) {
-			codeLength += tag.decodeAndCheck(is);
-		}
+    public int decode(InputStream is) throws IOException {
+        return decode(is, true);
+    }
 
-		BerLength length = new BerLength();
-		codeLength += length.decode(is);
+    public int decode(InputStream is, boolean withTag) throws IOException {
+        int codeLength = 0;
+        int subCodeLength = 0;
+        BerTag berTag = new BerTag();
 
-		int totalLength = length.val;
-		codeLength += totalLength;
+        if (withTag) {
+            codeLength += tag.decodeAndCheck(is);
+        }
 
-		subCodeLength += berTag.decode(is);
-		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.PRIMITIVE, 0)) {
-			pci = new PhysCellId();
-			subCodeLength += pci.decode(is, false);
-			subCodeLength += berTag.decode(is);
-		}
-		else {
-			throw new IOException("Tag does not match the mandatory sequence element tag.");
-		}
-		
-		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.PRIMITIVE, 1)) {
-			earfcnDl = new ARFCNValue();
-			subCodeLength += earfcnDl.decode(is, false);
-			if (subCodeLength == totalLength) {
-				return codeLength;
-			}
-		}
-		throw new IOException("Unexpected end of sequence, length tag: " + totalLength + ", actual sequence length: " + subCodeLength);
+        BerLength length = new BerLength();
+        codeLength += length.decode(is);
 
-		
-	}
+        int totalLength = length.val;
+        codeLength += totalLength;
 
-	public void encodeAndSave(int encodingSizeGuess) throws IOException {
-		BerByteArrayOutputStream os = new BerByteArrayOutputStream(encodingSizeGuess);
-		encode(os, false);
-		code = os.getArray();
-	}
+        subCodeLength += berTag.decode(is);
+        if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.PRIMITIVE, 0)) {
+            pci = new PhysCellId();
+            subCodeLength += pci.decode(is, false);
+            subCodeLength += berTag.decode(is);
+        } else {
+            throw new IOException("Tag does not match the mandatory sequence element tag.");
+        }
 
-	public String toString() {
-		StringBuilder sb = new StringBuilder();
-		appendAsString(sb, 0);
-		return sb.toString();
-	}
+        if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.PRIMITIVE, 1)) {
+            earfcnDl = new ARFCNValue();
+            subCodeLength += earfcnDl.decode(is, false);
+            if (subCodeLength == totalLength) {
+                return codeLength;
+            }
+        }
+        throw new IOException("Unexpected end of sequence, length tag: " + totalLength + ", actual sequence length: " + subCodeLength);
 
-	public void appendAsString(StringBuilder sb, int indentLevel) {
 
-		sb.append("{");
-		sb.append("\n");
-		for (int i = 0; i < indentLevel + 1; i++) {
-			sb.append("\t");
-		}
-		if (pci != null) {
-			sb.append("pci: ").append(pci);
-		}
-		
-		sb.append(",\n");
-		for (int i = 0; i < indentLevel + 1; i++) {
-			sb.append("\t");
-		}
-		if (earfcnDl != null) {
-			sb.append("earfcnDl: ").append(earfcnDl);
-		}
-		
-		sb.append("\n");
-		for (int i = 0; i < indentLevel; i++) {
-			sb.append("\t");
-		}
-		sb.append("}");
-	}
+    }
 
-	@Override
-	public boolean equals(Object o) {
-		if (o instanceof PCIARFCN) {
-			return pci.equals(((PCIARFCN) o).getPci()) && earfcnDl.equals(((PCIARFCN) o).getEarfcnDl());
-		}
+    public void encodeAndSave(int encodingSizeGuess) throws IOException {
+        BerByteArrayOutputStream os = new BerByteArrayOutputStream(encodingSizeGuess);
+        encode(os, false);
+        code = os.getArray();
+    }
 
-		return super.equals(o);
-	}
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        appendAsString(sb, 0);
+        return sb.toString();
+    }
 
-	@Override
-	public int hashCode() {
-		int result = pci.hashCode();
-		result = 31 * result + earfcnDl.hashCode();
-		return result;
-	}
+    public void appendAsString(StringBuilder sb, int indentLevel) {
+
+        sb.append("{");
+        sb.append("\n");
+        for (int i = 0; i < indentLevel + 1; i++) {
+            sb.append("\t");
+        }
+        if (pci != null) {
+            sb.append("pci: ").append(pci);
+        }
+
+        sb.append(",\n");
+        for (int i = 0; i < indentLevel + 1; i++) {
+            sb.append("\t");
+        }
+        if (earfcnDl != null) {
+            sb.append("earfcnDl: ").append(earfcnDl);
+        }
+
+        sb.append("\n");
+        for (int i = 0; i < indentLevel; i++) {
+            sb.append("\t");
+        }
+        sb.append("}");
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (o instanceof PCIARFCN) {
+            return pci.equals(((PCIARFCN) o).getPci()) && earfcnDl.equals(((PCIARFCN) o).getEarfcnDl());
+        }
+
+        return super.equals(o);
+    }
+
+    @Override
+    public int hashCode() {
+        int result = pci.hashCode();
+        result = 31 * result + earfcnDl.hashCode();
+        return result;
+    }
 }
 
diff --git a/src/main/java/org.onosproject.xran/codecs/api/package-info.java b/src/main/java/org.onosproject.xran/codecs/api/package-info.java
index e3949c9..ace3595 100644
--- a/src/main/java/org.onosproject.xran/codecs/api/package-info.java
+++ b/src/main/java/org.onosproject.xran/codecs/api/package-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/main/java/org.onosproject.xran/codecs/pdu/package-info.java b/src/main/java/org.onosproject.xran/codecs/pdu/package-info.java
index 570aae0..f258255 100644
--- a/src/main/java/org.onosproject.xran/codecs/pdu/package-info.java
+++ b/src/main/java/org.onosproject.xran/codecs/pdu/package-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/main/java/org.onosproject.xran/controller/Controller.java b/src/main/java/org.onosproject.xran/controller/Controller.java
index 2191f5b..946a1bd 100644
--- a/src/main/java/org.onosproject.xran/controller/Controller.java
+++ b/src/main/java/org.onosproject.xran/controller/Controller.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -42,6 +42,9 @@
     private int port = 8007;
     private boolean isRunning = false;
 
+    /**
+     * Run SCTP server.
+     */
     public void run() {
         final Controller ctrl = this;
         try {
@@ -62,6 +65,11 @@
         }
     }
 
+    /**
+     * Create bootstrap for server.
+     *
+     * @return server bootstrap
+     */
     private ServerBootstrap createServerBootStrap() {
         bossGroup = new NioEventLoopGroup(1);
         workerGroup = new NioEventLoopGroup();
@@ -73,6 +81,14 @@
         return b;
     }
 
+    /**
+     * Initialize controller and start SCTP server.
+     *
+     * @param deviceAgent device agent
+     * @param hostAgent   host agent
+     * @param packetAgent packet agent
+     * @param port        port of server
+     */
     public void start(XranDeviceAgent deviceAgent, XranHostAgent hostAgent, XranPacketProcessor packetAgent, int port) {
         if (isRunning && this.port != port) {
             stop();
@@ -91,7 +107,9 @@
         }
     }
 
-
+    /**
+     * Stop SCTP server.
+     */
     public void stop() {
         if (isRunning) {
             channel.channel().close();
diff --git a/src/main/java/org.onosproject.xran/controller/XranChannelHandler.java b/src/main/java/org.onosproject.xran/controller/XranChannelHandler.java
index 764f55c..d429602 100644
--- a/src/main/java/org.onosproject.xran/controller/XranChannelHandler.java
+++ b/src/main/java/org.onosproject.xran/controller/XranChannelHandler.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-present Open Networking Laboratory
+ * Copyright 2016-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -36,9 +36,8 @@
 import java.net.URISyntaxException;
 
 /**
- * Created by dimitris on 7/20/17.
+ * Xran channel handler.
  */
-
 @Sharable
 public class XranChannelHandler extends ChannelInboundHandlerAdapter {
 
@@ -51,6 +50,13 @@
         this.controller = controller;
     }
 
+    /**
+     * Given PDU construct an SCTP message.
+     *
+     * @param pdu PDU packet
+     * @return SCTP message
+     * @throws IOException IO exception
+     */
     public static SctpMessage getSctpMessage(XrancPdu pdu) throws IOException {
         BerByteArrayOutputStream os = new BerByteArrayOutputStream(4096);
 
@@ -90,13 +96,13 @@
         byte[] bytes = new byte[byteBuf.readableBytes()];
         byteBuf.readBytes(bytes);
 
-        XrancPdu recv_pdu = new XrancPdu();
+        XrancPdu recvPdu = new XrancPdu();
 
         InputStream inputStream = new ByteArrayInputStream(bytes);
 
-        recv_pdu.decode(inputStream);
+        recvPdu.decode(inputStream);
 
-        controller.packetAgent.handlePacket(recv_pdu, ctx);
+        controller.packetAgent.handlePacket(recvPdu, ctx);
     }
 
     @Override
diff --git a/src/main/java/org.onosproject.xran/controller/XranController.java b/src/main/java/org.onosproject.xran/controller/XranController.java
index 0ab91ef..b08c714 100644
--- a/src/main/java/org.onosproject.xran/controller/XranController.java
+++ b/src/main/java/org.onosproject.xran/controller/XranController.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -28,23 +28,73 @@
  */
 public interface XranController {
 
+    /**
+     * Send a HandOff request from one link to another.
+     *
+     * @param newLink target LINK entity
+     * @param oldLink source LINK entity
+     * @return blocking queue for RESPONSE
+     * @throws InterruptedException interrupted exception
+     */
     SynchronousQueue<String> sendHORequest(RnibLink newLink, RnibLink oldLink) throws InterruptedException;
 
+    /**
+     * Add a device listener for CELL connections.
+     *
+     * @param listener listener
+     */
     void addListener(XranDeviceListener listener);
 
+    /**
+     * Add a host listener for UE connections.
+     *
+     * @param listener listener
+     */
     void addListener(XranHostListener listener);
 
+    /**
+     * Remove a CELL device listener.
+     *
+     * @param listener listener
+     */
     void removeListener(XranDeviceListener listener);
 
+    /**
+     * Remove a UE host listener.
+     *
+     * @param listener listener
+     */
     void removeListener(XranHostListener listener);
 
-    SynchronousQueue<String> sendModifiedRRMConf(RRMConfig rrmConfig, boolean xICIC);
+    /**
+     * Send modified RRM configuration or xICICConfing.
+     *
+     * @param rrmConfig configuration fields to send
+     * @param xicic     if true sends xicic else it sends RRM
+     * @return blocking queue for RESPONSE
+     */
+    SynchronousQueue<String> sendmodifiedrrmconf(RRMConfig rrmConfig, boolean xicic);
 
+    /**
+     * Send scell add packet for specified LINK.
+     *
+     * @param link LINK entity
+     * @return blocking queue for RESPONSE
+     */
     SynchronousQueue<String> sendScellAdd(RnibLink link);
 
+    /**
+     * Send scell delete for specified LINK.
+     *
+     * @param link LINK entity
+     * @return true if sent correctly
+     */
     boolean sendScellDelete(RnibLink link);
 
-    int getNorthbound_timeout();
-
-    void setNorthbound_timeout(int northbound_timeout);
+    /**
+     * Get northbound timeout.
+     *
+     * @return interval in milliseconds
+     */
+    int getNorthboundTimeout();
 }
diff --git a/src/main/java/org.onosproject.xran/controller/XranControllerImpl.java b/src/main/java/org.onosproject.xran/controller/XranControllerImpl.java
index 99e79a7..8040cea 100644
--- a/src/main/java/org.onosproject.xran/controller/XranControllerImpl.java
+++ b/src/main/java/org.onosproject.xran/controller/XranControllerImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,10 +20,21 @@
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.sctp.SctpMessage;
 import org.apache.commons.lang.exception.ExceptionUtils;
-import org.apache.felix.scr.annotations.*;
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.apache.felix.scr.annotations.Service;
+import org.onlab.packet.IpAddress;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
-import org.onosproject.net.config.*;
+import org.onosproject.net.config.Config;
+import org.onosproject.net.config.ConfigFactory;
+import org.onosproject.net.config.NetworkConfigEvent;
+import org.onosproject.net.config.NetworkConfigListener;
+import org.onosproject.net.config.NetworkConfigRegistry;
+import org.onosproject.net.config.NetworkConfigService;
 import org.onosproject.net.config.basics.SubjectFactories;
 import org.onosproject.net.device.DeviceEvent;
 import org.onosproject.net.device.DeviceListener;
@@ -32,15 +43,59 @@
 import org.onosproject.net.host.HostListener;
 import org.onosproject.net.host.HostService;
 import org.onosproject.xran.XranStore;
-import org.onosproject.xran.codecs.api.*;
+import org.onosproject.xran.codecs.api.CRNTI;
+import org.onosproject.xran.codecs.api.ECGI;
+import org.onosproject.xran.codecs.api.ERABID;
+import org.onosproject.xran.codecs.api.ERABParams;
+import org.onosproject.xran.codecs.api.ERABParamsItem;
+import org.onosproject.xran.codecs.api.PCIARFCN;
+import org.onosproject.xran.codecs.api.PropScell;
+import org.onosproject.xran.codecs.api.RSRPRange;
+import org.onosproject.xran.codecs.api.RSRQRange;
+import org.onosproject.xran.codecs.api.RXSigReport;
+import org.onosproject.xran.codecs.api.RadioRepPerServCell;
+import org.onosproject.xran.codecs.api.SchedMeasRepPerServCell;
+import org.onosproject.xran.codecs.api.TrafficSplitPercentage;
 import org.onosproject.xran.codecs.ber.types.BerInteger;
-import org.onosproject.xran.codecs.pdu.*;
+import org.onosproject.xran.codecs.pdu.BearerAdmissionRequest;
+import org.onosproject.xran.codecs.pdu.BearerAdmissionResponse;
+import org.onosproject.xran.codecs.pdu.BearerAdmissionStatus;
+import org.onosproject.xran.codecs.pdu.BearerReleaseInd;
+import org.onosproject.xran.codecs.pdu.CellConfigReport;
+import org.onosproject.xran.codecs.pdu.CellConfigRequest;
+import org.onosproject.xran.codecs.pdu.HOComplete;
+import org.onosproject.xran.codecs.pdu.HOFailure;
+import org.onosproject.xran.codecs.pdu.HORequest;
+import org.onosproject.xran.codecs.pdu.L2MeasConfig;
+import org.onosproject.xran.codecs.pdu.PDCPMeasReportPerUe;
+import org.onosproject.xran.codecs.pdu.RRMConfig;
+import org.onosproject.xran.codecs.pdu.RRMConfigStatus;
+import org.onosproject.xran.codecs.pdu.RXSigMeasConfig;
+import org.onosproject.xran.codecs.pdu.RXSigMeasReport;
+import org.onosproject.xran.codecs.pdu.RadioMeasReportPerCell;
+import org.onosproject.xran.codecs.pdu.RadioMeasReportPerUE;
+import org.onosproject.xran.codecs.pdu.ScellAdd;
+import org.onosproject.xran.codecs.pdu.ScellAddStatus;
+import org.onosproject.xran.codecs.pdu.ScellDelete;
+import org.onosproject.xran.codecs.pdu.SchedMeasReportPerCell;
+import org.onosproject.xran.codecs.pdu.SchedMeasReportPerUE;
+import org.onosproject.xran.codecs.pdu.TrafficSplitConfig;
+import org.onosproject.xran.codecs.pdu.UEAdmissionRequest;
+import org.onosproject.xran.codecs.pdu.UEAdmissionResponse;
+import org.onosproject.xran.codecs.pdu.UEAdmissionStatus;
+import org.onosproject.xran.codecs.pdu.UECapabilityEnquiry;
+import org.onosproject.xran.codecs.pdu.UECapabilityInfo;
+import org.onosproject.xran.codecs.pdu.UEContextUpdate;
+import org.onosproject.xran.codecs.pdu.UEReconfigInd;
+import org.onosproject.xran.codecs.pdu.UEReleaseInd;
+import org.onosproject.xran.codecs.pdu.XICICConfig;
+import org.onosproject.xran.codecs.pdu.XrancPdu;
 import org.onosproject.xran.entities.RnibCell;
 import org.onosproject.xran.entities.RnibLink;
 import org.onosproject.xran.entities.RnibUe;
+import org.onosproject.xran.identifiers.ContextUpdateHandler;
 import org.onosproject.xran.identifiers.EcgiCrntiPair;
 import org.onosproject.xran.identifiers.LinkId;
-import org.onosproject.xran.identifiers.contextUpdateHandler;
 import org.onosproject.xran.impl.XranConfig;
 import org.onosproject.xran.providers.XranDeviceListener;
 import org.onosproject.xran.providers.XranHostListener;
@@ -51,8 +106,18 @@
 import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
-import java.util.*;
-import java.util.concurrent.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import java.util.Set;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.SynchronousQueue;
 import java.util.stream.Collectors;
 
 import static org.onosproject.net.DeviceId.deviceId;
@@ -79,7 +144,7 @@
     private final Controller controller = new Controller();
     private XranConfig xranConfig;
     private ApplicationId appId;
-    private int northbound_timeout;
+    private int northboundTimeout;
     /* Services */
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     private DeviceService deviceService;
@@ -106,11 +171,11 @@
     private UeMap ueMap;
     private LinkMap linkMap;
     /* MAPS */
-    private ConcurrentMap<String, ECGI> legitCells = new ConcurrentHashMap<>();
+    private ConcurrentMap<IpAddress, ECGI> legitCells = new ConcurrentHashMap<>();
     private ConcurrentMap<ECGI, SynchronousQueue<String>> hoMap = new ConcurrentHashMap<>();
-    private ConcurrentMap<ECGI, SynchronousQueue<String>> RRMCellMap = new ConcurrentHashMap<>();
+    private ConcurrentMap<ECGI, SynchronousQueue<String>> rrmcellMap = new ConcurrentHashMap<>();
     private ConcurrentMap<CRNTI, SynchronousQueue<String>> scellAddMap = new ConcurrentHashMap<>();
-    private ConcurrentMap<EcgiCrntiPair, contextUpdateHandler> contextUpdateMap = new ConcurrentHashMap<>();
+    private ConcurrentMap<EcgiCrntiPair, ContextUpdateHandler> contextUpdateMap = new ConcurrentHashMap<>();
     /* QUEUE */
     private BlockingQueue<Long> ueIdQueue = new LinkedBlockingQueue<>();
     /* AGENTS */
@@ -120,8 +185,8 @@
     /* LISTENERS */
     private Set<XranDeviceListener> xranDeviceListeners = new CopyOnWriteArraySet<>();
     private Set<XranHostListener> xranHostListeners = new CopyOnWriteArraySet<>();
-    private InternalDeviceListener device_listener = new InternalDeviceListener();
-    private InternalHostListener host_listener = new InternalHostListener();
+    private InternalDeviceListener deviceListener = new InternalDeviceListener();
+    private InternalHostListener hostListener = new InternalHostListener();
 
     @Activate
     public void activate() {
@@ -129,8 +194,8 @@
 
         configService.addListener(configListener);
         registry.registerConfigFactory(xranConfigFactory);
-        deviceService.addListener(device_listener);
-        hostService.addListener(host_listener);
+        deviceService.addListener(deviceListener);
+        hostService.addListener(hostListener);
 
         cellMap = new CellMap(xranStore);
         ueMap = new UeMap(xranStore);
@@ -145,8 +210,8 @@
     public void deactivate() {
         controller.stop();
 
-        deviceService.removeListener(device_listener);
-        hostService.removeListener(host_listener);
+        deviceService.removeListener(deviceListener);
+        hostService.removeListener(hostListener);
 
         legitCells.clear();
 
@@ -157,29 +222,30 @@
     }
 
     @Override
-    public SynchronousQueue<String> sendHORequest(RnibLink link_t, RnibLink link_s) throws InterruptedException {
-        ECGI ecgi_t = link_t.getLinkId().getEcgi(),
-                ecgi_s = link_s.getLinkId().getEcgi();
+    public SynchronousQueue<String> sendHORequest(RnibLink linkT, RnibLink linkS) throws InterruptedException {
+        ECGI ecgiT = linkT.getLinkId().getEcgi(),
+                ecgiS = linkS.getLinkId().getEcgi();
 
-        CRNTI crnti = linkMap.getCrnti(link_t.getLinkId().getUeId());
-        ChannelHandlerContext ctx_t = cellMap.getCtx(ecgi_t),
-                ctx_s = cellMap.getCtx(ecgi_s);
-
+        CRNTI crnti = linkMap.getCrnti(linkT.getLinkId().getUeId());
+        ChannelHandlerContext ctxT = cellMap.getCtx(ecgiT),
+                ctxS = cellMap.getCtx(ecgiS);
 
         SynchronousQueue<String> queue = new SynchronousQueue<>();
         try {
-            XrancPdu xrancPdu = HORequest.constructPacket(crnti, ecgi_s, ecgi_t);
+            XrancPdu xrancPdu = HORequest.constructPacket(crnti, ecgiS, ecgiT);
 
-            hoMap.put(ecgi_s, queue);
+            // temporary map that has ECGI source of a handoff to a queue waiting for REST response.
+            hoMap.put(ecgiS, queue);
 
-            ctx_t.writeAndFlush(getSctpMessage(xrancPdu));
-            ctx_s.writeAndFlush(getSctpMessage(xrancPdu));
+            ctxT.writeAndFlush(getSctpMessage(xrancPdu));
+            ctxS.writeAndFlush(getSctpMessage(xrancPdu));
+
+            // FIXME: only works for one HO at a time.
+            ueIdQueue.put(linkT.getLinkId().getUeId());
         } catch (IOException e) {
             e.printStackTrace();
         }
 
-        ueIdQueue.put(link_t.getLinkId().getUeId());
-
         return queue;
     }
 
@@ -204,23 +270,18 @@
     }
 
     @Override
-    public int getNorthbound_timeout() {
-        return northbound_timeout;
+    public int getNorthboundTimeout() {
+        return northboundTimeout;
     }
 
     @Override
-    public void setNorthbound_timeout(int northbound_timeout) {
-        this.northbound_timeout = northbound_timeout;
-    }
-
-    @Override
-    public SynchronousQueue<String> sendModifiedRRMConf(RRMConfig rrmConfig, boolean xICIC) {
+    public SynchronousQueue<String> sendmodifiedrrmconf(RRMConfig rrmConfig, boolean xicic) {
         ECGI ecgi = rrmConfig.getEcgi();
         ChannelHandlerContext ctx = cellMap.getCtx(ecgi);
         try {
             XrancPdu pdu;
 
-            if (xICIC) {
+            if (xicic) {
                 CellConfigReport cellConfigReport = cellMap.get(ecgi).getConf();
                 if (cellConfigReport != null) {
                     pdu = XICICConfig.constructPacket(rrmConfig, cellConfigReport);
@@ -230,7 +291,7 @@
                 pdu = RRMConfig.constructPacket(rrmConfig);
                 ctx.writeAndFlush(getSctpMessage(pdu));
                 SynchronousQueue<String> queue = new SynchronousQueue<>();
-                RRMCellMap.put(ecgi, queue);
+                rrmcellMap.put(ecgi, queue);
                 return queue;
             }
         } catch (IOException e) {
@@ -304,6 +365,11 @@
         return false;
     }
 
+    /**
+     * Timer to delete UE after being IDLE.
+     *
+     * @param ue UE entity
+     */
     private void restartTimer(RnibUe ue) {
         Timer timer = new Timer();
         ue.setTimer(timer);
@@ -320,6 +386,11 @@
         }, xranConfig.getIdleUeRemoval());
     }
 
+    /**
+     * Timer to delete LINK after not receiving measurements.
+     *
+     * @param link LINK entity
+     */
     private void restartTimer(RnibLink link) {
         Timer timer = new Timer();
         link.setTimer(timer);
@@ -328,12 +399,49 @@
             public void run() {
                 LinkId linkId = link.getLinkId();
                 xranStore.removeLink(linkId);
-                log.info("Link is removed after not receiving Meas Reports for {} ms", xranConfig.getNoMeasLinkRemoval());
+                log.info("Link is removed after not receiving Meas Reports for {} ms",
+                        xranConfig.getNoMeasLinkRemoval());
             }
         }, xranConfig.getNoMeasLinkRemoval());
 
     }
 
+    /**
+     * Request measurement configuration field of specified UE.
+     *
+     * @param primary primary CELL
+     * @param ue      UE entity
+     */
+    private void populateMeasConfig(RnibCell primary, RnibUe ue) {
+        try {
+            ChannelHandlerContext ctx = cellMap.getCtx(primary.getEcgi());
+            RXSigMeasConfig.MeasCells measCells = new RXSigMeasConfig.MeasCells();
+            xranStore.getcellnodes().forEach(cell -> {
+                CellConfigReport cellReport = ((RnibCell) cell).getConf();
+                if (cellReport != null) {
+                    PCIARFCN pciarfcn = new PCIARFCN();
+                    pciarfcn.setPci(cellReport.getPci());
+                    pciarfcn.setEarfcnDl(cellReport.getEarfcnDl());
+                    measCells.setPCIARFCN(pciarfcn);
+                }
+            });
+            XrancPdu xrancPdu = RXSigMeasConfig.constructPacket(
+                    primary.getEcgi(),
+                    ue.getCrnti(),
+                    measCells,
+                    xranConfig.getRxSignalInterval()
+            );
+            ue.setMeasConfig(xrancPdu.getBody().getRXSigMeasConfig());
+            ctx.writeAndFlush(getSctpMessage(xrancPdu));
+        } catch (IOException e) {
+            log.warn(ExceptionUtils.getFullStackTrace(e));
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Internal device listener.
+     */
     class InternalDeviceListener implements DeviceListener {
 
         @Override
@@ -361,14 +469,15 @@
                                                     e.printStackTrace();
                                                 }
                                             } else {
-                                                List<Object> ueNodes = xranStore.getUeNodes();
+                                                List<Object> ueNodes = xranStore.getuenodes();
                                                 ueNodes.forEach(object -> {
                                                     RnibUe ue = (RnibUe) object;
                                                     try {
-                                                        ECGI primary_ecgi = linkMap.getPrimaryCell(ue).getEcgi();
-                                                        ChannelHandlerContext ctx = cellMap.getCtx(primary_ecgi);
-                                                        RXSigMeasConfig.MeasCells measCells = new RXSigMeasConfig.MeasCells();
-                                                        xranStore.getCellNodes().forEach(cell -> {
+                                                        ECGI primaryEcgi = linkMap.getPrimaryCell(ue).getEcgi();
+                                                        ChannelHandlerContext ctx = cellMap.getCtx(primaryEcgi);
+                                                        RXSigMeasConfig.MeasCells measCells =
+                                                                new RXSigMeasConfig.MeasCells();
+                                                        xranStore.getcellnodes().forEach(cell -> {
                                                             CellConfigReport cellReport = ((RnibCell) cell).getConf();
                                                             if (cellReport != null) {
                                                                 PCIARFCN pciarfcn = new PCIARFCN();
@@ -378,7 +487,7 @@
                                                             }
                                                         });
                                                         XrancPdu xrancPdu = RXSigMeasConfig.constructPacket(
-                                                                primary_ecgi,
+                                                                primaryEcgi,
                                                                 ue.getCrnti(),
                                                                 measCells,
                                                                 xranConfig.getRxSignalInterval()
@@ -393,7 +502,8 @@
 
                                                 try {
                                                     ChannelHandlerContext ctx = cellMap.getCtx(ecgi);
-                                                    XrancPdu xrancPdu = L2MeasConfig.constructPacket(ecgi, xranConfig.getL2MeasInterval());
+                                                    XrancPdu xrancPdu = L2MeasConfig
+                                                            .constructPacket(ecgi, xranConfig.getL2MeasInterval());
                                                     cell.setMeasConfig(xrancPdu.getBody().getL2MeasConfig());
                                                     SctpMessage sctpMessage = getSctpMessage(xrancPdu);
                                                     ctx.writeAndFlush(sctpMessage);
@@ -423,6 +533,9 @@
         }
     }
 
+    /**
+     * Internal host listener.
+     */
     class InternalHostListener implements HostListener {
 
         @Override
@@ -433,8 +546,8 @@
                 case HOST_MOVED: {
                     RnibUe ue = ueMap.get(hostIdtoUEId(event.subject().id()));
                     if (ue != null) {
-                        ECGI ecgi_primary = linkMap.getPrimaryCell(ue).getEcgi();
-                        RnibCell primary = cellMap.get(ecgi_primary);
+                        ECGI ecgiPrimary = linkMap.getPrimaryCell(ue).getEcgi();
+                        RnibCell primary = cellMap.get(ecgiPrimary);
                         ue.setMeasConfig(null);
                         if (primary != null) {
                             Timer timer = new Timer();
@@ -463,30 +576,7 @@
                                     xranConfig.getConfigRequestInterval() * 1000
                             );
                             if (ue.getMeasConfig() == null) {
-                                try {
-                                    ChannelHandlerContext ctx = cellMap.getCtx(primary.getEcgi());
-                                    RXSigMeasConfig.MeasCells measCells = new RXSigMeasConfig.MeasCells();
-                                    xranStore.getCellNodes().forEach(cell -> {
-                                        CellConfigReport cellReport = ((RnibCell) cell).getConf();
-                                        if (cellReport != null) {
-                                            PCIARFCN pciarfcn = new PCIARFCN();
-                                            pciarfcn.setPci(cellReport.getPci());
-                                            pciarfcn.setEarfcnDl(cellReport.getEarfcnDl());
-                                            measCells.setPCIARFCN(pciarfcn);
-                                        }
-                                    });
-                                    XrancPdu xrancPdu = RXSigMeasConfig.constructPacket(
-                                            primary.getEcgi(),
-                                            ue.getCrnti(),
-                                            measCells,
-                                            xranConfig.getRxSignalInterval()
-                                    );
-                                    ue.setMeasConfig(xrancPdu.getBody().getRXSigMeasConfig());
-                                    ctx.writeAndFlush(getSctpMessage(xrancPdu));
-                                } catch (IOException e) {
-                                    log.warn(ExceptionUtils.getFullStackTrace(e));
-                                    e.printStackTrace();
-                                }
+                                populateMeasConfig(primary, ue);
                             }
                         }
                     }
@@ -499,13 +589,16 @@
         }
     }
 
+    /**
+     * Internal xran device agent.
+     */
     public class InternalXranDeviceAgent implements XranDeviceAgent {
 
         private final Logger log = LoggerFactory.getLogger(InternalXranDeviceAgent.class);
 
         @Override
         public boolean addConnectedCell(String host, ChannelHandlerContext ctx) {
-            ECGI ecgi = legitCells.get(host);
+            ECGI ecgi = legitCells.get(IpAddress.valueOf(host));
 
             if (ecgi == null) {
                 log.error("Device is not a legit source; ignoring...");
@@ -531,10 +624,10 @@
 
         @Override
         public boolean removeConnectedCell(String host) {
-            ECGI ecgi = legitCells.get(host);
-            List<RnibLink> linksByECGI = xranStore.getLinksByECGI(ecgi);
+            ECGI ecgi = legitCells.get(IpAddress.valueOf(host));
+            List<RnibLink> linksbyecgi = xranStore.getlinksbyecgi(ecgi);
 
-            linksByECGI.forEach(rnibLink -> xranStore.removeLink(rnibLink.getLinkId()));
+            linksbyecgi.forEach(rnibLink -> xranStore.removeLink(rnibLink.getLinkId()));
 
             if (cellMap.remove(ecgi)) {
                 for (XranDeviceListener l : xranDeviceListeners) {
@@ -546,6 +639,9 @@
         }
     }
 
+    /**
+     * Internal xran host agent.
+     */
     public class InternalXranHostAgent implements XranHostAgent {
 
         @Override
@@ -556,10 +652,11 @@
 
                 Set<ECGI> ecgiSet = Sets.newConcurrentHashSet();
 
-                ecgiSet.add(xranStore.getLinksByUeId(ue.getId())
+                xranStore.getlinksbyueid(ue.getId())
                         .stream()
                         .filter(l -> l.getType().equals(RnibLink.Type.SERVING_PRIMARY))
-                        .findFirst().get().getLinkId().getEcgi());
+                        .findFirst()
+                        .ifPresent(l -> ecgiSet.add(l.getLinkId().getEcgi()));
 
                 for (XranHostListener l : xranHostListeners) {
                     l.hostAdded(ue, ecgiSet);
@@ -581,7 +678,7 @@
 
         @Override
         public boolean removeConnectedHost(RnibUe ue) {
-            List<RnibLink> links = xranStore.getLinksByUeId(ue.getId());
+            List<RnibLink> links = xranStore.getlinksbyueid(ue.getId());
             links.forEach(rnibLink -> xranStore.removeLink(rnibLink.getLinkId()));
             if (ueMap.remove(ue.getId())) {
                 for (XranHostListener l : xranHostListeners) {
@@ -595,465 +692,656 @@
 
     public class InternalXranPacketAgent implements XranPacketProcessor {
         @Override
-        public void handlePacket(XrancPdu recv_pdu, ChannelHandlerContext ctx) throws IOException, InterruptedException {
-            XrancPdu send_pdu;
+        public void handlePacket(XrancPdu recvPdu, ChannelHandlerContext ctx)
+                throws IOException, InterruptedException {
+            XrancPdu sendPdu;
 
-            int apiID = recv_pdu.getHdr().getApiId().intValue();
-            log.debug("Received message: {}", recv_pdu);
+            int apiID = recvPdu.getHdr().getApiId().intValue();
+            log.debug("Received message: {}", recvPdu);
             switch (apiID) {
                 case 1: {
                     // Decode Cell config report.
-                    CellConfigReport report = recv_pdu.getBody().getCellConfigReport();
-
-                    ECGI ecgi = report.getEcgi();
-
-                    RnibCell cell = xranStore.getCell(ecgi);
-                    cell.setVersion(recv_pdu.getHdr().getVer().toString());
-                    cell.setConf(report);
-                    cellMap.putPciArfcn(cell);
+                    CellConfigReport report = recvPdu.getBody().getCellConfigReport();
+                    handleCellconfigreport(report, recvPdu.getHdr().getVer().toString());
                     break;
                 }
                 case 2: {
                     // Decode UE Admission Request.
-                    UEAdmissionRequest ueAdmissionRequest = recv_pdu.getBody().getUEAdmissionRequest();
-
-                    ECGI ecgi = ueAdmissionRequest.getEcgi();
-                    if (xranStore.getCell(ecgi) != null) {
-                        CRNTI crnti = ueAdmissionRequest.getCrnti();
-                        send_pdu = UEAdmissionResponse.constructPacket(ecgi, crnti, xranConfig.admissionFlag());
-                        ctx.writeAndFlush(getSctpMessage(send_pdu));
-                    } else {
-                        log.warn("Could not find ECGI in registered cells: {}", ecgi);
-                    }
+                    UEAdmissionRequest ueAdmissionRequest = recvPdu.getBody().getUEAdmissionRequest();
+                    handleUeadmissionrequest(ueAdmissionRequest, ctx);
                     break;
                 }
                 case 4: {
                     // Decode UE Admission Status.
-                    UEAdmissionStatus ueAdmissionStatus = recv_pdu.getBody().getUEAdmissionStatus();
-
-                    RnibUe ue = ueMap.get(ueAdmissionStatus.getEcgi(), ueAdmissionStatus.getCrnti());
-                    if (ue != null) {
-                        if (ueAdmissionStatus.getAdmEstStatus().value.intValue() == 0) {
-                            ue.setState(RnibUe.State.ACTIVE);
-                        } else {
-                            ue.setState(RnibUe.State.IDLE);
-                        }
-                    }
-
-                    if (ueAdmissionStatus.getAdmEstStatus().value.intValue() == 0) {
-                        EcgiCrntiPair ecgiCrntiPair = EcgiCrntiPair.valueOf(ueAdmissionStatus.getEcgi(), ueAdmissionStatus.getCrnti());
-                        contextUpdateMap.compute(ecgiCrntiPair, (k, v) -> {
-                            if (v == null) {
-                                v = new contextUpdateHandler();
-                            }
-                            if (v.setAdmissionStatus(ueAdmissionStatus)) {
-                                handleContextUpdate(v.getContextUpdate(), ctx, false);
-                            }
-                            return v;
-                        });
-                    }
+                    UEAdmissionStatus ueAdmissionStatus = recvPdu.getBody().getUEAdmissionStatus();
+                    handleAdmissionstatus(ueAdmissionStatus, ctx);
                     break;
                 }
                 case 5: {
                     // Decode UE Context Update.
-                    UEContextUpdate ueContextUpdate = recv_pdu.getBody().getUEContextUpdate();
-                    EcgiCrntiPair ecgiCrntiPair = EcgiCrntiPair.valueOf(ueContextUpdate.getEcgi(), ueContextUpdate.getCrnti());
-
-                    contextUpdateMap.compute(ecgiCrntiPair, (k, v) -> {
-                        if (v == null) {
-                            v = new contextUpdateHandler();
-                        }
-                        if (v.setContextUpdate(ueContextUpdate)) {
-                            HOComplete hoComplete = v.getHoComplete();
-                            handleContextUpdate(ueContextUpdate, ctx, hoComplete != null);
-                            if (hoComplete != null) {
-                                try {
-                                    hoMap.get(hoComplete.getEcgiS()).put("Hand Over Completed");
-                                } catch (InterruptedException e) {
-                                    log.error(ExceptionUtils.getFullStackTrace(e));
-                                    e.printStackTrace();
-                                } finally {
-                                    hoMap.remove(hoComplete.getEcgiS());
-                                }
-                            }
-                        }
-                        return v;
-                    });
+                    UEContextUpdate ueContextUpdate = recvPdu.getBody().getUEContextUpdate();
+                    handleUecontextupdate(ueContextUpdate, ctx);
 
                     break;
                 }
                 case 6: {
                     // Decode UE Reconfig_Ind.
-                    UEReconfigInd ueReconfigInd = recv_pdu.getBody().getUEReconfigInd();
-                    RnibUe ue = ueMap.get(ueReconfigInd.getEcgi(), ueReconfigInd.getCrntiOld());
-
-                    if (ue != null) {
-                        ue.setCrnti(ueReconfigInd.getCrntiNew());
-                    } else {
-                        log.warn("Could not find UE with this CRNTI: {}", ueReconfigInd.getCrntiOld());
-                    }
+                    UEReconfigInd ueReconfigInd = recvPdu.getBody().getUEReconfigInd();
+                    handleUereconfigind(ueReconfigInd);
                     break;
                 }
                 case 7: {
                     // If xRANc wants to deactivate UE, we pass UEReleaseInd from xRANc to eNB.
                     // Decode UE Release_Ind.
-                    UEReleaseInd ueReleaseInd = recv_pdu.getBody().getUEReleaseInd();
-                    RnibUe ue = ueMap.get(ueReleaseInd.getEcgi(), ueReleaseInd.getCrnti());
-                    if (ue != null) {
-                        ue.setState(RnibUe.State.IDLE);
-                        restartTimer(ue);
-                    }
+                    UEReleaseInd ueReleaseInd = recvPdu.getBody().getUEReleaseInd();
+                    handleUereleaseind(ueReleaseInd);
                     break;
                 }
                 case 8: {
                     // Decode Bearer Adm Request
-                    BearerAdmissionRequest bearerAdmissionRequest = recv_pdu.getBody().getBearerAdmissionRequest();
-
-                    ECGI ecgi = bearerAdmissionRequest.getEcgi();
-                    CRNTI crnti = bearerAdmissionRequest.getCrnti();
-                    ERABParams erabParams = bearerAdmissionRequest.getErabParams();
-                    RnibLink link = linkMap.get(ecgi, crnti);
-                    if (link != null) {
-                        link.setBearerParameters(erabParams);
-                    } else {
-                        log.warn("Could not find link between {}-{}", ecgi, crnti);
-                    }
-
-                    BerInteger numErabs = bearerAdmissionRequest.getNumErabs();
-                    // Encode and send Bearer Admission Response
-                    send_pdu = BearerAdmissionResponse.constructPacket(ecgi, crnti, erabParams, numErabs, xranConfig.bearerFlag());
-                    ctx.writeAndFlush(getSctpMessage(send_pdu));
+                    BearerAdmissionRequest bearerAdmissionRequest = recvPdu.getBody().getBearerAdmissionRequest();
+                    handleBeareradmissionrequest(bearerAdmissionRequest, ctx);
                     break;
                 }
                 case 10: {
                     //Decode Bearer Admission Status
-                    BearerAdmissionStatus bearerAdmissionStatus = recv_pdu.getBody().getBearerAdmissionStatus();
+                    BearerAdmissionStatus bearerAdmissionStatus = recvPdu.getBody().getBearerAdmissionStatus();
                     break;
-//                    ECGI ecgi = bearerAdmissionStatus.getEcgi();
-//                    CRNTI crnti = bearerAdmissionStatus.getCrnti();
-//
-//                    RnibLink link = linkMap.get(ecgi, crnti);
                 }
                 case 11: {
                     //Decode Bearer Release Ind
-                    BearerReleaseInd bearerReleaseInd = recv_pdu.getBody().getBearerReleaseInd();
-
-                    ECGI ecgi = bearerReleaseInd.getEcgi();
-                    CRNTI crnti = bearerReleaseInd.getCrnti();
-                    RnibLink link = linkMap.get(ecgi, crnti);
-
-                    List<ERABID> erabidsRelease = bearerReleaseInd.getErabIds().getERABID();
-                    List<ERABParamsItem> erabParamsItem = link.getBearerParameters().getERABParamsItem();
-
-                    List<ERABParamsItem> unreleased = erabParamsItem
-                            .stream()
-                            .filter(item -> {
-                                Optional<ERABID> any = erabidsRelease.stream().filter(id -> id.equals(item.getId())).findAny();
-                                return !any.isPresent();
-                            }).collect(Collectors.toList());
-
-                    link.getBearerParameters().setERABParamsItem(new ArrayList<>(unreleased));
+                    BearerReleaseInd bearerReleaseInd = recvPdu.getBody().getBearerReleaseInd();
+                    handleBearerreleaseind(bearerReleaseInd);
                     break;
                 }
                 case 13: {
-                    HOFailure hoFailure = recv_pdu.getBody().getHOFailure();
-
-                    try {
-                        hoMap.get(hoFailure.getEcgi())
-                                .put("Hand Over Failed with cause: " + hoFailure.getCause());
-                    } catch (InterruptedException e) {
-                        log.error(ExceptionUtils.getFullStackTrace(e));
-                        e.printStackTrace();
-                    } finally {
-                        hoMap.remove(hoFailure.getEcgi());
-                        ueIdQueue.take();
-                    }
+                    HOFailure hoFailure = recvPdu.getBody().getHOFailure();
+                    handleHofailure(hoFailure);
                     break;
 
                 }
                 case 14: {
-                    HOComplete hoComplete = recv_pdu.getBody().getHOComplete();
-
-                    EcgiCrntiPair ecgiCrntiPair = EcgiCrntiPair.valueOf(hoComplete.getEcgiT(), hoComplete.getCrntiNew());
-                    contextUpdateMap.compute(ecgiCrntiPair, (k, v) -> {
-                        if (v == null) {
-                            v = new contextUpdateHandler();
-                        }
-                        if (v.setHoComplete(hoComplete)) {
-                            handleContextUpdate(v.getContextUpdate(), ctx, true);
-
-                            try {
-                                hoMap.get(hoComplete.getEcgiS()).put("Hand Over Completed");
-                            } catch (InterruptedException e) {
-                                log.error(ExceptionUtils.getFullStackTrace(e));
-                                e.printStackTrace();
-                            } finally {
-                                hoMap.remove(hoComplete.getEcgiS());
-                            }
-                        }
-                        return v;
-                    });
-
+                    HOComplete hoComplete = recvPdu.getBody().getHOComplete();
+                    handleHocomplete(hoComplete, ctx);
                     break;
                 }
 
                 case 16: {
-                    // Decode RX Sig Meas Report.
-                    RXSigMeasReport rxSigMeasReport = recv_pdu.getBody().getRXSigMeasReport();
-                    List<RXSigReport> rxSigReportList = rxSigMeasReport.getCellMeasReports().getRXSigReport();
-
-                    RnibUe ue = ueMap.get(rxSigMeasReport.getEcgi(), rxSigMeasReport.getCrnti());
-                    if (ue != null) {
-                        Long ueId = ue.getId();
-
-                        if (!rxSigReportList.isEmpty()) {
-                            rxSigReportList.forEach(rxSigReport -> {
-                                RnibCell cell = cellMap.get(rxSigReport.getPciArfcn());
-                                if (cell != null) {
-                                    ECGI ecgi = cell.getEcgi();
-
-                                    RnibLink link = linkMap.get(ecgi, ueId);
-                                    if (link == null) {
-                                        log.warn("Could not find link between: {}-{} | Creating non-serving link..", ecgi, ueId);
-                                        link = linkMap.putNonServingLink(cell, ueId);
-                                    }
-
-                                    if (link != null) {
-                                        if (link.getType().equals(RnibLink.Type.NON_SERVING)) {
-                                            restartTimer(link);
-                                        }
-
-                                        RSRQRange rsrq = rxSigReport.getRsrq();
-                                        RSRPRange rsrp = rxSigReport.getRsrp();
-
-                                        RnibLink.LinkQuality quality = link.getQuality();
-                                        quality.setRX(new RnibLink.LinkQuality.RX(
-                                                rsrp.value.intValue() - 140,
-                                                (rsrq.value.intValue() * 0.5) - 19.5
-                                        ));
-                                    }
-                                } else {
-                                    log.warn("case 16: Could not find cell with PCI-ARFCN: {}", rxSigReport.getPciArfcn());
-                                }
-                            });
-                        }
-                    }
+                    // Decode Rx Sig Meas Report.
+                    RXSigMeasReport rxSigMeasReport = recvPdu.getBody().getRXSigMeasReport();
+                    handleRxsigmeasreport(rxSigMeasReport);
                     break;
                 }
                 case 18: {
-                    RadioMeasReportPerUE radioMeasReportPerUE = recv_pdu.getBody().getRadioMeasReportPerUE();
-
-                    RnibUe ue = ueMap.get(radioMeasReportPerUE.getEcgi(), radioMeasReportPerUE.getCrnti());
-                    if (ue != null) {
-                        Long ueId = ue.getId();
-                        List<RadioRepPerServCell> servCells = radioMeasReportPerUE.getRadioReportServCells().getRadioRepPerServCell();
-
-                        servCells.forEach(servCell -> {
-                            RnibCell cell = cellMap.get(servCell.getPciArfcn());
-                            if (cell != null) {
-                                RnibLink link = linkMap.get(cell.getEcgi(), ueId);
-                                if (link != null) {
-                                    RadioRepPerServCell.CqiHist cqiHist = servCell.getCqiHist();
-                                    RnibLink.LinkQuality quality = link.getQuality();
-
-                                    final double[] values = {0, 0, 0};
-                                    final int[] i = {1};
-                                    cqiHist.getBerInteger().forEach(value -> {
-                                        values[0] = Math.max(values[0], value.intValue());
-                                        values[1] += i[0] * value.intValue();
-                                        values[2] += value.intValue();
-                                        i[0]++;
-                                    });
-
-                                    quality.setCQI(new RnibLink.LinkQuality.CQI(
-                                            cqiHist,
-                                            values[0],
-                                            values[1] / values[0]
-                                    ));
-
-                                } else {
-                                    log.warn("Could not find link between: {}-{}", cell.getEcgi(), ueId);
-                                }
-                            } else {
-                                log.warn("case 18: Could not find cell with PCI-ARFCN: {}", servCell.getPciArfcn());
-                            }
-                        });
-                    }
+                    RadioMeasReportPerUE radioMeasReportPerUE = recvPdu.getBody().getRadioMeasReportPerUE();
+                    handleRadionmeasreportperue(radioMeasReportPerUE);
                     break;
                 }
                 case 19: {
-                    RadioMeasReportPerCell radioMeasReportPerCell = recv_pdu.getBody().getRadioMeasReportPerCell();
+                    RadioMeasReportPerCell radioMeasReportPerCell = recvPdu.getBody().getRadioMeasReportPerCell();
                     break;
                 }
                 case 20: {
-                    SchedMeasReportPerUE schedMeasReportPerUE = recv_pdu.getBody().getSchedMeasReportPerUE();
-
-                    RnibUe ue = ueMap.get(schedMeasReportPerUE.getEcgi(), schedMeasReportPerUE.getCrnti());
-                    if (ue != null) {
-                        Long ueId = ue.getId();
-
-                        List<SchedMeasRepPerServCell> servCells = schedMeasReportPerUE.getSchedReportServCells()
-                                .getSchedMeasRepPerServCell();
-
-                        servCells.forEach(servCell -> {
-                            RnibCell cell = cellMap.get(servCell.getPciArfcn());
-                            if (cell != null) {
-                                RnibLink link = linkMap.get(cell.getEcgi(), ueId);
-                                if (link != null) {
-                                    link.getQuality().setMCS(new RnibLink.LinkQuality.MCS(
-                                            servCell.getMcsDl(),
-                                            servCell.getMcsUl()
-                                    ));
-
-                                    link.setResourceUsage(new RnibLink.ResourceUsage(
-                                            servCell.getPrbUsage().getPrbUsageDl(),
-                                            servCell.getPrbUsage().getPrbUsageUl()
-                                    ));
-                                } else {
-                                    log.warn("Could not find link between: {}-{}", cell.getEcgi(), ueId);
-                                }
-                            } else {
-                                log.warn("case 20: Could not find cell with PCI-ARFCN: {}", servCell.getPciArfcn());
-                            }
-                        });
-                    }
+                    SchedMeasReportPerUE schedMeasReportPerUE = recvPdu.getBody().getSchedMeasReportPerUE();
+                    handleSchedmeasreportperue(schedMeasReportPerUE);
                     break;
                 }
                 case 21: {
-                    SchedMeasReportPerCell schedMeasReportPerCell = recv_pdu.getBody().getSchedMeasReportPerCell();
-                    RnibCell cell = cellMap.get(schedMeasReportPerCell.getEcgi());
-                    if (cell != null) {
-                        cell.setPrbUsage(new RnibCell.PrbUsageContainer(
-                                schedMeasReportPerCell.getPrbUsagePcell(),
-                                schedMeasReportPerCell.getPrbUsageScell()
-                        ));
-
-                        cell.setQci(schedMeasReportPerCell.getQciVals());
-                    } else {
-                        log.warn("Could not find cell with ECGI: {}", schedMeasReportPerCell.getEcgi());
-                    }
+                    SchedMeasReportPerCell schedMeasReportPerCell = recvPdu.getBody().getSchedMeasReportPerCell();
+                    handleSchedmeasreportpercell(schedMeasReportPerCell);
                     break;
                 }
                 case 22: {
-                    PDCPMeasReportPerUe pdcpMeasReportPerUe = recv_pdu.getBody().getPDCPMeasReportPerUe();
-
-                    RnibUe ue = ueMap.get(pdcpMeasReportPerUe.getEcgi(), pdcpMeasReportPerUe.getCrnti());
-                    if (ue != null) {
-                        Long ueId = ue.getId();
-                        RnibLink link = linkMap.get(pdcpMeasReportPerUe.getEcgi(), ueId);
-                        if (link != null) {
-                            link.setPdcpThroughput(new RnibLink.PDCPThroughput(
-                                    pdcpMeasReportPerUe.getThroughputDl(),
-                                    pdcpMeasReportPerUe.getThroughputUl()
-                            ));
-
-                            link.setPdcpPackDelay(new RnibLink.PDCPPacketDelay(
-                                    pdcpMeasReportPerUe.getPktDelayDl(),
-                                    pdcpMeasReportPerUe.getPktDelayUl()
-                            ));
-                        } else {
-                            log.warn("Could not find link between: {}-{}", pdcpMeasReportPerUe.getEcgi(), ueId);
-                        }
-                    }
+                    PDCPMeasReportPerUe pdcpMeasReportPerUe = recvPdu.getBody().getPDCPMeasReportPerUe();
+                    handlePdcpmeasreportperue(pdcpMeasReportPerUe);
                     break;
                 }
                 case 24: {
                     // Decode UE Capability Info
-                    UECapabilityInfo capabilityInfo = recv_pdu.getBody().getUECapabilityInfo();
-
-                    RnibUe ue = ueMap.get(capabilityInfo.getEcgi(), capabilityInfo.getCrnti());
-                    if (ue != null) {
-                        ue.setCapability(capabilityInfo);
-                    } else {
-                        log.warn("Could not find UE with this CRNTI: {}", capabilityInfo.getCrnti());
-                    }
+                    UECapabilityInfo capabilityInfo = recvPdu.getBody().getUECapabilityInfo();
+                    handleCapabilityinfo(capabilityInfo);
                     break;
                 }
                 case 25: {
                     // Don't know what will invoke sending UE CAPABILITY ENQUIRY
                     // Encode and send UE CAPABILITY ENQUIRY
-                    UECapabilityEnquiry ueCapabilityEnquiry = recv_pdu.getBody().getUECapabilityEnquiry();
-                    XrancPdu xrancPdu = UECapabilityEnquiry.constructPacket(ueCapabilityEnquiry.getEcgi(), ueCapabilityEnquiry.getCrnti());
-                    ctx.writeAndFlush(getSctpMessage(xrancPdu));
+                    UECapabilityEnquiry ueCapabilityEnquiry = recvPdu.getBody().getUECapabilityEnquiry();
+                    handleUecapabilityenquiry(ueCapabilityEnquiry, ctx);
                     break;
                 }
                 case 27: {
                     //Decode ScellAddStatus
-                    ScellAddStatus scellAddStatus = recv_pdu.getBody().getScellAddStatus();
-                    RnibUe ue = ueMap.get(scellAddStatus.getEcgi(), scellAddStatus.getCrnti());
-                    if (ue != null) {
-                        Long ueId = ue.getId();
-                        try {
-                            scellAddMap.get(scellAddStatus.getCrnti()).put("Scell's status: " + scellAddStatus.getStatus());
-                            if (scellAddStatus.getStatus().getBerEnum().get(0).value.intValue() == 0) {
-
-                                scellAddStatus.getScellsInd().getPCIARFCN().forEach(
-                                        pciarfcn -> {
-                                            RnibCell cell = cellMap.get(pciarfcn);
-                                            RnibLink link = linkMap.get(cell.getEcgi(), ueId);
-                                            link.setType(RnibLink.Type.SERVING_SECONDARY_CA);
-                                        }
-                                );
-                            } else {
-                                log.error("Scell addition failed.");
-                            }
-                        } catch (InterruptedException e) {
-                            log.error(ExceptionUtils.getFullStackTrace(e));
-                            e.printStackTrace();
-                        } finally {
-                            scellAddMap.remove(scellAddStatus.getCrnti());
-                        }
-                    }
+                    ScellAddStatus scellAddStatus = recvPdu.getBody().getScellAddStatus();
+                    handleScelladdstatus(scellAddStatus);
                     break;
                 }
-                // TODO: 28: ScellDelete
                 case 30: {
                     // Decode RRMConfig Status
-                    RRMConfigStatus rrmConfigStatus = recv_pdu.getBody().getRRMConfigStatus();
-                    try {
-                        RRMCellMap.get(rrmConfigStatus.getEcgi())
-                                .put("RRM Config's status: " + rrmConfigStatus.getStatus());
-                    } catch (InterruptedException e) {
-                        log.error(ExceptionUtils.getFullStackTrace(e));
-                        e.printStackTrace();
-                    } finally {
-                        RRMCellMap.remove(rrmConfigStatus.getEcgi());
-                    }
+                    RRMConfigStatus rrmConfigStatus = recvPdu.getBody().getRRMConfigStatus();
+                    handleRrmconfigstatus(rrmConfigStatus);
                     break;
                 }
                 //TODO Case 31: SeNBAdd 32: SeNBAddStatus 33: SeNBDelete
                 case 34: {
-                    TrafficSplitConfig trafficSplitConfig = recv_pdu.getBody().getTrafficSplitConfig();
-
-                    RnibUe ue = ueMap.get(trafficSplitConfig.getEcgi(), trafficSplitConfig.getCrnti());
-                    if (ue != null) {
-                        Long ueId = ue.getId();
-                        List<TrafficSplitPercentage> splitPercentages = trafficSplitConfig.getTrafficSplitPercent().getTrafficSplitPercentage();
-
-                        splitPercentages.forEach(trafficSplitPercentage -> {
-                            RnibCell cell = cellMap.get(trafficSplitPercentage.getEcgi());
-                            if (cell != null) {
-                                RnibLink link = linkMap.get(cell.getEcgi(), ueId);
-                                if (link != null) {
-                                    link.setTrafficPercent(trafficSplitPercentage);
-                                } else {
-                                    log.warn("Could not find link between: {}-{}", cell.getEcgi(), ueId);
-                                }
-                            } else {
-                                log.warn("Could not find cell with ECGI: {}", trafficSplitConfig.getEcgi());
-                            }
-                        });
-                    }
+                    TrafficSplitConfig trafficSplitConfig = recvPdu.getBody().getTrafficSplitConfig();
+                    handleTrafficSplitConfig(trafficSplitConfig);
                     break;
                 }
                 default: {
-                    log.warn("Wrong API ID: {}", recv_pdu);
+                    log.warn("Wrong API ID: {}", recvPdu);
                     break;
                 }
             }
 
         }
 
+        /**
+         * Handle Cellconfigreport.
+         * @param report CellConfigReport
+         * @param version String version ID
+         */
+        private void handleCellconfigreport(CellConfigReport report, String version) {
+            ECGI ecgi = report.getEcgi();
+
+            RnibCell cell = xranStore.getCell(ecgi);
+            cell.setVersion(version);
+            cell.setConf(report);
+            cellMap.putPciArfcn(cell);
+        }
+
+        /**
+         * Handle Ueadmissionrequest.
+         * @param ueAdmissionRequest UEAdmissionRequest
+         * @param ctx ChannelHandlerContext
+         * @throws IOException IO Exception
+         */
+        private void handleUeadmissionrequest(UEAdmissionRequest ueAdmissionRequest, ChannelHandlerContext ctx)
+                throws IOException {
+            ECGI ecgi = ueAdmissionRequest.getEcgi();
+            if (xranStore.getCell(ecgi) != null) {
+                CRNTI crnti = ueAdmissionRequest.getCrnti();
+                XrancPdu sendPdu = UEAdmissionResponse.constructPacket(ecgi, crnti, xranConfig.admissionFlag());
+                ctx.writeAndFlush(getSctpMessage(sendPdu));
+            } else {
+                log.warn("Could not find ECGI in registered cells: {}", ecgi);
+            }
+        }
+
+        /**
+         * Handle UEAdmissionStatus.
+         * @param ueAdmissionStatus UEAdmissionStatus
+         * @param ctx ChannelHandlerContext
+         */
+        private void handleAdmissionstatus(UEAdmissionStatus ueAdmissionStatus, ChannelHandlerContext ctx) {
+            RnibUe ue = ueMap.get(ueAdmissionStatus.getEcgi(), ueAdmissionStatus.getCrnti());
+            if (ue != null) {
+                if (ueAdmissionStatus.getAdmEstStatus().value.intValue() == 0) {
+                    ue.setState(RnibUe.State.ACTIVE);
+                } else {
+                    ue.setState(RnibUe.State.IDLE);
+                }
+            }
+
+            if (ueAdmissionStatus.getAdmEstStatus().value.intValue() == 0) {
+                EcgiCrntiPair ecgiCrntiPair = EcgiCrntiPair
+                        .valueOf(ueAdmissionStatus.getEcgi(), ueAdmissionStatus.getCrnti());
+                contextUpdateMap.compute(ecgiCrntiPair, (k, v) -> {
+                    if (v == null) {
+                        v = new ContextUpdateHandler();
+                    }
+                    if (v.setAdmissionStatus(ueAdmissionStatus)) {
+                        handleContextUpdate(v.getContextUpdate(), ctx, false);
+                    }
+                    return v;
+                });
+            }
+        }
+
+        /**
+         * Handle UEContextUpdate.
+         * @param ueContextUpdate UEContextUpdate
+         * @param ctx ChannelHandlerContext
+         */
+        private void handleUecontextupdate(UEContextUpdate ueContextUpdate, ChannelHandlerContext ctx) {
+            EcgiCrntiPair ecgiCrntiPair = EcgiCrntiPair
+                    .valueOf(ueContextUpdate.getEcgi(), ueContextUpdate.getCrnti());
+
+            contextUpdateMap.compute(ecgiCrntiPair, (k, v) -> {
+                if (v == null) {
+                    v = new ContextUpdateHandler();
+                }
+                if (v.setContextUpdate(ueContextUpdate)) {
+                    HOComplete hoComplete = v.getHoComplete();
+                    handleContextUpdate(ueContextUpdate, ctx, hoComplete != null);
+                    if (hoComplete != null) {
+                        try {
+                            hoMap.get(hoComplete.getEcgiS()).put("Hand Over Completed");
+                        } catch (InterruptedException e) {
+                            log.error(ExceptionUtils.getFullStackTrace(e));
+                            e.printStackTrace();
+                        } finally {
+                            hoMap.remove(hoComplete.getEcgiS());
+                        }
+                    }
+                }
+                return v;
+            });
+        }
+
+        /**
+         * Handle UEReconfigInd.
+         * @param ueReconfigInd UEReconfigInd
+         */
+        private void handleUereconfigind(UEReconfigInd ueReconfigInd) {
+            RnibUe ue = ueMap.get(ueReconfigInd.getEcgi(), ueReconfigInd.getCrntiOld());
+            RnibCell cell = cellMap.get(ueReconfigInd.getEcgi());
+
+            if (ue != null && cell != null) {
+                ue.setCrnti(ueReconfigInd.getCrntiNew());
+                ueMap.putCrnti(cell, ue);
+            } else {
+                log.warn("Could not find UE with this CRNTI: {}", ueReconfigInd.getCrntiOld());
+            }
+        }
+
+        /**
+         * Handle UEReleaseInd.
+         * @param ueReleaseInd UEReleaseInd
+         */
+        private void handleUereleaseind(UEReleaseInd ueReleaseInd) {
+            ECGI ecgi = ueReleaseInd.getEcgi();
+            CRNTI crnti = ueReleaseInd.getCrnti();
+            RnibUe ue = ueMap.get(ecgi, crnti);
+
+            // Check if there is an ongoing handoff and only remove if ue is not part of the handoff.
+            Long peek = ueIdQueue.peek();
+            if (peek != null) {
+                EcgiCrntiPair ecgiCrntiPair = ueMap.getCrntUe().inverse().get(peek);
+                if (ecgiCrntiPair != null && ecgiCrntiPair.equals(EcgiCrntiPair.valueOf(ecgi, crnti))) {
+                    return;
+                }
+            }
+
+            if (ue != null) {
+                ue.setState(RnibUe.State.IDLE);
+                restartTimer(ue);
+            } else {
+                log.warn("Cannot release UE from non primary link.");
+            }
+        }
+
+        /**
+         * Handle BearerAdmissionRequest.
+         * @param bearerAdmissionRequest BearerAdmissionRequest
+         * @param ctx ChannelHandlerContext
+         * @throws IOException IO Exception
+         */
+        private void handleBeareradmissionrequest(BearerAdmissionRequest bearerAdmissionRequest,
+                                                  ChannelHandlerContext ctx) throws IOException {
+            ECGI ecgi = bearerAdmissionRequest.getEcgi();
+            CRNTI crnti = bearerAdmissionRequest.getCrnti();
+            ERABParams erabParams = bearerAdmissionRequest.getErabParams();
+            RnibLink link = linkMap.get(ecgi, crnti);
+            if (link != null) {
+                link.setBearerParameters(erabParams);
+            } else {
+                log.warn("Could not find link between {}-{}", ecgi, crnti);
+            }
+
+            BerInteger numErabs = bearerAdmissionRequest.getNumErabs();
+            // Encode and send Bearer Admission Response
+            XrancPdu sendPdu = BearerAdmissionResponse
+                    .constructPacket(ecgi, crnti, erabParams, numErabs, xranConfig.bearerFlag());
+            ctx.writeAndFlush(getSctpMessage(sendPdu));
+        }
+
+        /**
+         * Handle BearerReleaseInd.
+         * @param bearerReleaseInd
+         */
+        private void handleBearerreleaseind(BearerReleaseInd bearerReleaseInd) {
+            ECGI ecgi = bearerReleaseInd.getEcgi();
+            CRNTI crnti = bearerReleaseInd.getCrnti();
+            RnibLink link = linkMap.get(ecgi, crnti);
+
+            List<ERABID> erabidsRelease = bearerReleaseInd.getErabIds().getERABID();
+            List<ERABParamsItem> erabParamsItem = link.getBearerParameters().getERABParamsItem();
+
+            List<ERABParamsItem> unreleased = erabParamsItem
+                    .stream()
+                    .filter(item -> {
+                        Optional<ERABID> any = erabidsRelease.stream()
+                                .filter(id -> id.equals(item.getId())).findAny();
+                        return !any.isPresent();
+                    }).collect(Collectors.toList());
+
+            link.getBearerParameters().setERABParamsItem(new ArrayList<>(unreleased));
+        }
+
+        /**
+         * Handle HOFailure.
+         * @param hoFailure HOFailure
+         * @throws InterruptedException ueIdQueue interruption
+         */
+        private void handleHofailure(HOFailure hoFailure) throws InterruptedException {
+            try {
+                hoMap.get(hoFailure.getEcgi())
+                        .put("Hand Over Failed with cause: " + hoFailure.getCause());
+            } catch (InterruptedException e) {
+                log.error(ExceptionUtils.getFullStackTrace(e));
+                e.printStackTrace();
+            } finally {
+                hoMap.remove(hoFailure.getEcgi());
+                ueIdQueue.take();
+            }
+        }
+
+        /**
+         * Handle HOComplete.
+         * @param hoComplete HOComplete
+         * @param ctx ChannelHandlerContext
+         */
+        private void handleHocomplete(HOComplete hoComplete, ChannelHandlerContext ctx) {
+            EcgiCrntiPair ecgiCrntiPair = EcgiCrntiPair.valueOf(hoComplete.getEcgiT(),
+                    hoComplete.getCrntiNew());
+            contextUpdateMap.compute(ecgiCrntiPair, (k, v) -> {
+                if (v == null) {
+                    v = new ContextUpdateHandler();
+                }
+                if (v.setHoComplete(hoComplete)) {
+                    handleContextUpdate(v.getContextUpdate(), ctx, true);
+
+                    try {
+                        hoMap.get(hoComplete.getEcgiS()).put("Hand Over Completed");
+                    } catch (InterruptedException e) {
+                        log.error(ExceptionUtils.getFullStackTrace(e));
+                        e.printStackTrace();
+                    } finally {
+                        hoMap.remove(hoComplete.getEcgiS());
+                    }
+                }
+                return v;
+            });
+        }
+
+        /**
+         * Handle RXSigMeasReport.
+         * @param rxSigMeasReport RXSigMeasReport
+         */
+        private void handleRxsigmeasreport(RXSigMeasReport rxSigMeasReport) {
+            List<RXSigReport> rxSigReportList = rxSigMeasReport.getCellMeasReports().getRXSigReport();
+
+            RnibUe ue = ueMap.get(rxSigMeasReport.getEcgi(), rxSigMeasReport.getCrnti());
+            if (ue != null) {
+                Long ueId = ue.getId();
+
+                if (!rxSigReportList.isEmpty()) {
+                    rxSigReportList.forEach(rxSigReport -> {
+                        RnibCell cell = cellMap.get(rxSigReport.getPciArfcn());
+                        if (cell != null) {
+                            ECGI ecgi = cell.getEcgi();
+
+                            RnibLink link = linkMap.get(ecgi, ueId);
+                            if (link == null) {
+                                log.warn("Could not find link between: {}-{} | Creating non-serving link..",
+                                        ecgi, ueId);
+                                link = linkMap.putNonServingLink(cell, ueId);
+                            }
+
+                            if (link != null) {
+                                if (link.getType().equals(RnibLink.Type.NON_SERVING)) {
+                                    restartTimer(link);
+                                }
+
+                                RSRQRange rsrq = rxSigReport.getRsrq();
+                                RSRPRange rsrp = rxSigReport.getRsrp();
+
+                                RnibLink.LinkQuality quality = link.getQuality();
+                                quality.setRx(new RnibLink.LinkQuality.Rx(
+                                        rsrp.value.intValue() - 140,
+                                        (rsrq.value.intValue() * 0.5) - 19.5
+                                ));
+                            }
+                        } else {
+                            log.warn("case 16: Could not find cell with PCI-ARFCN: {}",
+                                    rxSigReport.getPciArfcn());
+                        }
+                    });
+                }
+            }
+        }
+
+        /**
+         * Handle RadioMeasReportPerUE.
+         * @param radioMeasReportPerUE RadioMeasReportPerUE
+         */
+        private void handleRadionmeasreportperue(RadioMeasReportPerUE radioMeasReportPerUE) {
+            RnibUe ue = ueMap.get(radioMeasReportPerUE.getEcgi(), radioMeasReportPerUE.getCrnti());
+            if (ue != null) {
+                Long ueId = ue.getId();
+                List<RadioRepPerServCell> servCells = radioMeasReportPerUE.getRadioReportServCells()
+                        .getRadioRepPerServCell();
+
+                servCells.forEach(servCell -> {
+                    RnibCell cell = cellMap.get(servCell.getPciArfcn());
+                    if (cell != null) {
+                        RnibLink link = linkMap.get(cell.getEcgi(), ueId);
+                        if (link != null) {
+                            RadioRepPerServCell.CqiHist cqiHist = servCell.getCqiHist();
+                            RnibLink.LinkQuality quality = link.getQuality();
+
+                            final double[] values = {0, 0, 0};
+                            final int[] i = {1};
+                            cqiHist.getBerInteger().forEach(value -> {
+                                values[0] = Math.max(values[0], value.intValue());
+                                values[1] += i[0] * value.intValue();
+                                values[2] += value.intValue();
+                                i[0]++;
+                            });
+
+                            quality.setCqi(new RnibLink.LinkQuality.Cqi(
+                                    cqiHist,
+                                    values[0],
+                                    values[1] / values[0]
+                            ));
+
+                        } else {
+                            log.warn("Could not find link between: {}-{}", cell.getEcgi(), ueId);
+                        }
+                    } else {
+                        log.warn("case 18: Could not find cell with PCI-ARFCN: {}", servCell.getPciArfcn());
+                    }
+                });
+            }
+        }
+
+        /**
+         * Handle SchedMeasReportPerUE.
+         * @param schedMeasReportPerUE SchedMeasReportPerUE
+         */
+        private void handleSchedmeasreportperue(SchedMeasReportPerUE schedMeasReportPerUE) {
+            RnibUe ue = ueMap.get(schedMeasReportPerUE.getEcgi(), schedMeasReportPerUE.getCrnti());
+            if (ue != null) {
+                Long ueId = ue.getId();
+
+                List<SchedMeasRepPerServCell> servCells = schedMeasReportPerUE.getSchedReportServCells()
+                        .getSchedMeasRepPerServCell();
+
+                servCells.forEach(servCell -> {
+                    RnibCell cell = cellMap.get(servCell.getPciArfcn());
+                    if (cell != null) {
+                        RnibLink link = linkMap.get(cell.getEcgi(), ueId);
+                        if (link != null) {
+                            link.getQuality().setMcs(new RnibLink.LinkQuality.Mcs(
+                                    servCell.getMcsDl(),
+                                    servCell.getMcsUl()
+                            ));
+
+                            link.setResourceUsage(new RnibLink.ResourceUsage(
+                                    servCell.getPrbUsage().getPrbUsageDl(),
+                                    servCell.getPrbUsage().getPrbUsageUl()
+                            ));
+                        } else {
+                            log.warn("Could not find link between: {}-{}", cell.getEcgi(), ueId);
+                        }
+                    } else {
+                        log.warn("case 20: Could not find cell with PCI-ARFCN: {}", servCell.getPciArfcn());
+                    }
+                });
+            }
+        }
+
+        /**
+         * Handle SchedMeasReportPerCell.
+         * @param schedMeasReportPerCell SchedMeasReportPerCell
+         */
+        private void handleSchedmeasreportpercell(SchedMeasReportPerCell schedMeasReportPerCell) {
+            RnibCell cell = cellMap.get(schedMeasReportPerCell.getEcgi());
+            if (cell != null) {
+                cell.setPrbUsage(new RnibCell.PrbUsageContainer(
+                        schedMeasReportPerCell.getPrbUsagePcell(),
+                        schedMeasReportPerCell.getPrbUsageScell()
+                ));
+
+                cell.setQci(schedMeasReportPerCell.getQciVals());
+            } else {
+                log.warn("Could not find cell with ECGI: {}", schedMeasReportPerCell.getEcgi());
+            }
+        }
+
+        /**
+         * Handle PDCPMeasReportPerUe.
+         * @param pdcpMeasReportPerUe PDCPMeasReportPerUe
+         */
+        private void handlePdcpmeasreportperue(PDCPMeasReportPerUe pdcpMeasReportPerUe) {
+            RnibUe ue = ueMap.get(pdcpMeasReportPerUe.getEcgi(), pdcpMeasReportPerUe.getCrnti());
+            if (ue != null) {
+                Long ueId = ue.getId();
+                RnibLink link = linkMap.get(pdcpMeasReportPerUe.getEcgi(), ueId);
+                if (link != null) {
+                    link.setPdcpThroughput(new RnibLink.PdcpThroughput(
+                            pdcpMeasReportPerUe.getThroughputDl(),
+                            pdcpMeasReportPerUe.getThroughputUl()
+                    ));
+
+                    link.setPdcpPackDelay(new RnibLink.PdcpPacketdelay(
+                            pdcpMeasReportPerUe.getPktDelayDl(),
+                            pdcpMeasReportPerUe.getPktDelayUl()
+                    ));
+                } else {
+                    log.warn("Could not find link between: {}-{}", pdcpMeasReportPerUe.getEcgi(), ueId);
+                }
+            }
+        }
+
+        /**
+         * Handle UECapabilityInfo.
+         * @param capabilityInfo UECapabilityInfo
+         */
+        private void handleCapabilityinfo(UECapabilityInfo capabilityInfo) {
+            RnibUe ue = ueMap.get(capabilityInfo.getEcgi(), capabilityInfo.getCrnti());
+            if (ue != null) {
+                ue.setCapability(capabilityInfo);
+            } else {
+                log.warn("Could not find UE with this CRNTI: {}", capabilityInfo.getCrnti());
+            }
+        }
+
+        /**
+         * Handle UECapabilityEnquiry.
+         * @param ueCapabilityEnquiry UECapabilityEnquiry
+         * @param ctx ChannelHandlerContext
+         * @throws IOException IO Exception
+         */
+        private void handleUecapabilityenquiry(UECapabilityEnquiry ueCapabilityEnquiry, ChannelHandlerContext ctx)
+                throws IOException {
+            XrancPdu xrancPdu = UECapabilityEnquiry.constructPacket(ueCapabilityEnquiry.getEcgi(),
+                    ueCapabilityEnquiry.getCrnti());
+            ctx.writeAndFlush(getSctpMessage(xrancPdu));
+        }
+
+        /**
+         * Handle ScellAddStatus.
+         * @param scellAddStatus ScellAddStatus
+         */
+        private void handleScelladdstatus(ScellAddStatus scellAddStatus) {
+            RnibUe ue = ueMap.get(scellAddStatus.getEcgi(), scellAddStatus.getCrnti());
+            if (ue != null) {
+                Long ueId = ue.getId();
+                try {
+                    scellAddMap.get(scellAddStatus.getCrnti()).put("Scell's status: " +
+                            scellAddStatus.getStatus());
+                    final int[] i = {0};
+                    scellAddStatus.getScellsInd().getPCIARFCN().forEach(
+                            pciarfcn -> {
+                                if (scellAddStatus.getStatus().getBerEnum().get(i[0]).value.intValue() == 0) {
+                                    RnibCell cell = cellMap.get(pciarfcn);
+                                    RnibLink link = linkMap.get(cell.getEcgi(), ueId);
+                                    link.setType(RnibLink.Type.SERVING_SECONDARY_CA);
+                                }
+                                i[0]++;
+                            }
+                    );
+
+                } catch (InterruptedException e) {
+                    log.error(ExceptionUtils.getFullStackTrace(e));
+                    e.printStackTrace();
+                } finally {
+                    scellAddMap.remove(scellAddStatus.getCrnti());
+                }
+            }
+        }
+
+        /**
+         * Handle RRMConfigStatus.
+         * @param rrmConfigStatus RRMConfigStatus
+         */
+        private void handleRrmconfigstatus(RRMConfigStatus rrmConfigStatus) {
+            try {
+                rrmcellMap.get(rrmConfigStatus.getEcgi())
+                        .put("RRM Config's status: " + rrmConfigStatus.getStatus());
+            } catch (InterruptedException e) {
+                log.error(ExceptionUtils.getFullStackTrace(e));
+                e.printStackTrace();
+            } finally {
+                rrmcellMap.remove(rrmConfigStatus.getEcgi());
+            }
+        }
+
+        /**
+         * Handle TrafficSplitConfig.
+         * @param trafficSplitConfig TrafficSplitConfig
+         */
+        private void handleTrafficSplitConfig(TrafficSplitConfig trafficSplitConfig) {
+            RnibUe ue = ueMap.get(trafficSplitConfig.getEcgi(), trafficSplitConfig.getCrnti());
+            if (ue != null) {
+                Long ueId = ue.getId();
+                List<TrafficSplitPercentage> splitPercentages = trafficSplitConfig
+                        .getTrafficSplitPercent().getTrafficSplitPercentage();
+
+                splitPercentages.forEach(trafficSplitPercentage -> {
+                    RnibCell cell = cellMap.get(trafficSplitPercentage.getEcgi());
+                    if (cell != null) {
+                        RnibLink link = linkMap.get(cell.getEcgi(), ueId);
+                        if (link != null) {
+                            link.setTrafficPercent(trafficSplitPercentage);
+                        } else {
+                            log.warn("Could not find link between: {}-{}", cell.getEcgi(), ueId);
+                        }
+                    } else {
+                        log.warn("Could not find cell with ECGI: {}", trafficSplitConfig.getEcgi());
+                    }
+                });
+            }
+        }
+
+        /**
+         * Handle context update depending if its handoff or not.
+         *
+         * @param contextUpdate context update packet
+         * @param ctx           channel context for the CELL
+         * @param handoff       true if we handle a Hand Off
+         */
         private void handleContextUpdate(UEContextUpdate contextUpdate, ChannelHandlerContext ctx, boolean handoff) {
             RnibUe ue;
             RnibCell cell = xranStore.getCell(contextUpdate.getEcgi());
@@ -1078,6 +1366,9 @@
         }
     }
 
+    /**
+     * Internal class for NetworkConfigListener.
+     */
     class InternalNetworkConfigListener implements NetworkConfigListener {
 
         @Override
@@ -1100,6 +1391,11 @@
             }
         }
 
+        /**
+         * Handle config event.
+         *
+         * @param config
+         */
         private void handleConfigEvent(Optional<Config> config) {
             if (!config.isPresent()) {
                 return;
@@ -1107,7 +1403,7 @@
 
             xranConfig = (XranConfig) config.get();
 
-            northbound_timeout = xranConfig.getNorthBoundTimeout();
+            northboundTimeout = xranConfig.getNorthBoundTimeout();
 
             legitCells.putAll(xranConfig.activeCellSet());
 
diff --git a/src/main/java/org.onosproject.xran/controller/XranDeviceAgent.java b/src/main/java/org.onosproject.xran/controller/XranDeviceAgent.java
index b81a628..a322c47 100644
--- a/src/main/java/org.onosproject.xran/controller/XranDeviceAgent.java
+++ b/src/main/java/org.onosproject.xran/controller/XranDeviceAgent.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,11 +19,24 @@
 import io.netty.channel.ChannelHandlerContext;
 
 /**
- * Created by dimitris on 7/27/17.
+ * Xran device agent interface.
  */
 public interface XranDeviceAgent {
 
+    /**
+     * Add connected CELL.
+     *
+     * @param host IP of host trying to connect
+     * @param ctx  channel of CELL speaking to
+     * @return true if succeeded
+     */
     boolean addConnectedCell(String host, ChannelHandlerContext ctx);
 
+    /**
+     * Remove disconnected CELL.
+     *
+     * @param host IP of host disconnected
+     * @return true if remove succeeded
+     */
     boolean removeConnectedCell(String host);
 }
diff --git a/src/main/java/org.onosproject.xran/controller/XranHostAgent.java b/src/main/java/org.onosproject.xran/controller/XranHostAgent.java
index 07ab26e..9c335da 100644
--- a/src/main/java/org.onosproject.xran/controller/XranHostAgent.java
+++ b/src/main/java/org.onosproject.xran/controller/XranHostAgent.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,10 +21,25 @@
 import org.onosproject.xran.entities.RnibUe;
 
 /**
- * Created by dimitris on 7/28/17.
+ * Xran host agent interface.
  */
 public interface XranHostAgent {
+
+    /**
+     * Add connected host.
+     *
+     * @param ue   UE entity
+     * @param cell CELL entity
+     * @param ctx  channel of CELL
+     * @return true if succeeded
+     */
     boolean addConnectedHost(RnibUe ue, RnibCell cell, ChannelHandlerContext ctx);
 
+    /**
+     * Remove disconnected host.
+     *
+     * @param ue UE entity
+     * @return true if remove succeeded
+     */
     boolean removeConnectedHost(RnibUe ue);
 }
diff --git a/src/main/java/org.onosproject.xran/controller/XranPacketProcessor.java b/src/main/java/org.onosproject.xran/controller/XranPacketProcessor.java
index 73cb587..893b21d 100644
--- a/src/main/java/org.onosproject.xran/controller/XranPacketProcessor.java
+++ b/src/main/java/org.onosproject.xran/controller/XranPacketProcessor.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,11 +17,21 @@
 package org.onosproject.xran.controller;
 
 import io.netty.channel.ChannelHandlerContext;
-import org.onosproject.net.DeviceId;
 import org.onosproject.xran.codecs.pdu.XrancPdu;
 
 import java.io.IOException;
 
+/**
+ * Xran packet processor interface.
+ */
 public interface XranPacketProcessor {
+    /**
+     * Handle an incoming packet.
+     *
+     * @param pdu pdu of incoming packet
+     * @param ctx channel received the packet
+     * @throws IOException io exception
+     * @throws InterruptedException interrupted exception
+     */
     void handlePacket(XrancPdu pdu, ChannelHandlerContext ctx) throws IOException, InterruptedException;
 }
diff --git a/src/main/java/org.onosproject.xran/controller/package-info.java b/src/main/java/org.onosproject.xran/controller/package-info.java
index 7f4660f..866c396 100644
--- a/src/main/java/org.onosproject.xran/controller/package-info.java
+++ b/src/main/java/org.onosproject.xran/controller/package-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-present Open Networking Laboratory
+ * Copyright 2016-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/main/java/org.onosproject.xran/entities/RnibCell.java b/src/main/java/org.onosproject.xran/entities/RnibCell.java
index ac29eba..c7ffe69 100644
--- a/src/main/java/org.onosproject.xran/entities/RnibCell.java
+++ b/src/main/java/org.onosproject.xran/entities/RnibCell.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,7 +16,11 @@
 
 package org.onosproject.xran.entities;
 
-import com.fasterxml.jackson.annotation.*;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 import com.fasterxml.jackson.databind.JsonNode;
 import org.onosproject.net.DeviceId;
 import org.onosproject.store.service.WallClockTimestamp;
@@ -41,10 +45,10 @@
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-/**
- * Created by dimitris on 7/22/17.
- */
 
+/**
+ * R-NIB Cell and its properties.
+ */
 @JsonPropertyOrder({
         "ECGI",
         "Configuration",
@@ -81,6 +85,12 @@
         rrmConfig.setEcgi(ecgi);
     }
 
+    /**
+     * Encode ECGI and obtain its URI.
+     *
+     * @param ecgi ECGI
+     * @return URI
+     */
     public static URI uri(ECGI ecgi) {
         if (ecgi != null) {
             try {
@@ -95,6 +105,13 @@
         return null;
     }
 
+    /**
+     * Obtain ECGI from the device ID.
+     *
+     * @param deviceId ID of the device
+     * @return ECGI
+     * @throws IOException I0 Exception for ByteArrayInputStream
+     */
     public static ECGI decodeDeviceId(DeviceId deviceId) throws IOException {
         String uri = deviceId.toString();
         String hexEcgi = uri.substring(uri.lastIndexOf("xran:") + 5);
@@ -107,65 +124,120 @@
         return ecgi;
     }
 
+    /**
+     * Get version ID.
+     *
+     * @return version ID
+     */
     public int getVersion() {
         return Integer.parseInt(version);
     }
 
+    /**
+     * Set version ID.
+     *
+     * @param version version ID
+     */
     public void setVersion(String version) {
         this.version = version;
     }
 
+    /**
+     * Get RRMConfig.
+     *
+     * @return RRMConfig
+     */
     @JsonProperty("RRMConfiguration")
     public RRMConfig getRrmConfig() {
         return rrmConfig;
     }
 
+    /**
+     * Set RRMConfig properties.
+     *
+     * @param rrmConfig RRMConfig
+     */
     @JsonProperty("RRMConfiguration")
     public void setRrmConfig(RRMConfig rrmConfig) {
         this.rrmConfig = rrmConfig;
     }
 
+    /**
+     * Get PRB Usage.
+     * @return prb usage
+     */
     @JsonProperty("PRB-Usage")
     public PrbUsageContainer getPrbUsage() {
         return prbUsage;
     }
 
+    /**
+     * Set PRB Usage.
+     *
+     * @param prbUsage prb Usage
+     */
     @JsonProperty("PRB-Usage")
     public void setPrbUsage(PrbUsageContainer prbUsage) {
         this.prbUsage = prbUsage;
     }
 
+    /**
+     * Get ECGI.
+     *
+     * @return ECGI
+     */
     @JsonProperty("ECGI")
     public ECGI getEcgi() {
         return ecgi;
     }
 
+    /**
+     * Set ECGI.
+     *
+     * @param ecgi ECGI
+     */
     @JsonProperty("ECGI")
     public void setEcgi(ECGI ecgi) {
         this.ecgi = ecgi;
     }
 
+    /**
+     * Get cell config report.
+     *
+     * @return CellConfig Report
+     */
     @JsonProperty("Configuration")
     public CellConfigReport getConf() {
         return conf;
     }
 
+    /**
+     * Set cell config report.
+     *
+     * @param conf Cell config report
+     */
     @JsonProperty("Configuration")
     public void setConf(CellConfigReport conf) {
         this.conf = conf;
     }
 
+    /**
+     * Modify the RRM Config parameters of cell.
+     *
+     * @param rrmConfigNode RRMConfig parameters to modify obtained from REST call
+     * @param ueList List of all UEs
+     * @throws Exception p_a size not equal to UE size
+     */
     public void modifyRrmConfig(JsonNode rrmConfigNode, List<RnibUe> ueList) throws Exception {
         RRMConfig.Crnti crnti = new RRMConfig.Crnti();
         ueList.forEach(ue -> crnti.addCRNTI(ue.getCrnti()));
 
-        {
-            JsonNode p_a = rrmConfigNode.path("p_a");
-            if (!p_a.isMissingNode()) {
+            JsonNode pA = rrmConfigNode.path("p_a");
+            if (!pA.isMissingNode()) {
                 RRMConfig.Pa pa = new RRMConfig.Pa();
-                if (p_a.isArray()) {
-                    if (ueList.size() == p_a.size()) {
-                        List<XICICPA> collect = Stream.of(p_a)
+                if (pA.isArray()) {
+                    if (ueList.size() == pA.size()) {
+                        List<XICICPA> collect = Stream.of(pA)
                                 .map(val -> new XICICPA(val.asInt()))
                                 .collect(Collectors.toList());
                         pa.setXICICPA(collect);
@@ -175,15 +247,13 @@
                 }
                 rrmConfig.setPa(pa);
             }
-        }
 
-        {
-            JsonNode start_prb_dl = rrmConfigNode.path("start_prb_dl");
-            if (!start_prb_dl.isMissingNode()) {
+            JsonNode startPrbDl1 = rrmConfigNode.path("start_prb_dl");
+            if (!startPrbDl1.isMissingNode()) {
                 RRMConfig.StartPrbDl startPrbDl = new RRMConfig.StartPrbDl();
-                if (start_prb_dl.isArray()) {
-                    if (ueList.size() == start_prb_dl.size()) {
-                        List<BerInteger> collect = Stream.of(start_prb_dl)
+                if (startPrbDl1.isArray()) {
+                    if (ueList.size() == startPrbDl1.size()) {
+                        List<BerInteger> collect = Stream.of(startPrbDl1)
                                 .map(val -> new BerInteger(val.asInt()))
                                 .collect(Collectors.toList());
                         startPrbDl.setSeqOf(collect);
@@ -193,15 +263,13 @@
                 }
                 rrmConfig.setStartPrbDl(startPrbDl);
             }
-        }
 
-        {
-            JsonNode end_prb_dl = rrmConfigNode.path("end_prb_dl");
-            if (!end_prb_dl.isMissingNode()) {
+            JsonNode endPrbDl1 = rrmConfigNode.path("end_prb_dl");
+            if (!endPrbDl1.isMissingNode()) {
                 RRMConfig.EndPrbDl endPrbDl = new RRMConfig.EndPrbDl();
-                if (end_prb_dl.isArray()) {
-                    if (ueList.size() == end_prb_dl.size()) {
-                        List<BerInteger> collect = Stream.of(end_prb_dl)
+                if (endPrbDl1.isArray()) {
+                    if (ueList.size() == endPrbDl1.size()) {
+                        List<BerInteger> collect = Stream.of(endPrbDl1)
                                 .map(val -> new BerInteger(val.asInt()))
                                 .collect(Collectors.toList());
                         endPrbDl.setSeqOf(collect);
@@ -211,14 +279,12 @@
                 }
                 rrmConfig.setEndPrbDl(endPrbDl);
             }
-        }
 
-        {
-            JsonNode sub_frame_bitmask_dl = rrmConfigNode.path("sub_frame_bitmask_dl");
-            if (!sub_frame_bitmask_dl.isMissingNode()) {
+            JsonNode frameBitmaskDl = rrmConfigNode.path("sub_frame_bitmask_dl");
+            if (!frameBitmaskDl.isMissingNode()) {
                 RRMConfig.SubframeBitmaskDl subframeBitmaskDl = new RRMConfig.SubframeBitmaskDl();
-                if (sub_frame_bitmask_dl.isArray()) {
-                    List<BerBitString> collect = Stream.of(sub_frame_bitmask_dl)
+                if (frameBitmaskDl.isArray()) {
+                    List<BerBitString> collect = Stream.of(frameBitmaskDl)
                             .map(val -> new BerBitString(DatatypeConverter.parseHexBinary(val.asText()), 10))
                             .collect(Collectors.toList());
 
@@ -228,15 +294,13 @@
                 }
                 rrmConfig.setSubframeBitmaskDl(subframeBitmaskDl);
             }
-        }
 
-        {
-            JsonNode start_prb_ul = rrmConfigNode.path("start_prb_ul");
-            if (!start_prb_ul.isMissingNode()) {
+            JsonNode startPrbUl1 = rrmConfigNode.path("start_prb_ul");
+            if (!startPrbUl1.isMissingNode()) {
                 RRMConfig.StartPrbUl startPrbUl = new RRMConfig.StartPrbUl();
-                if (start_prb_ul.isArray()) {
-                    if (ueList.size() == start_prb_ul.size()) {
-                        List<BerInteger> collect = Stream.of(start_prb_ul)
+                if (startPrbUl1.isArray()) {
+                    if (ueList.size() == startPrbUl1.size()) {
+                        List<BerInteger> collect = Stream.of(startPrbUl1)
                                 .map(val -> new BerInteger(val.asInt()))
                                 .collect(Collectors.toList());
                         startPrbUl.setSeqOf(collect);
@@ -246,15 +310,13 @@
                 }
                 rrmConfig.setStartPrbUl(startPrbUl);
             }
-        }
 
-        {
-            JsonNode end_prb_ul = rrmConfigNode.path("end_prb_ul");
-            if (!end_prb_ul.isMissingNode()) {
+            JsonNode endPrbUl1 = rrmConfigNode.path("end_prb_ul");
+            if (!endPrbUl1.isMissingNode()) {
                 RRMConfig.EndPrbUl endPrbUl = new RRMConfig.EndPrbUl();
-                if (end_prb_ul.isArray()) {
-                    if (ueList.size() == end_prb_ul.size()) {
-                        List<BerInteger> collect = Stream.of(end_prb_ul)
+                if (endPrbUl1.isArray()) {
+                    if (ueList.size() == endPrbUl1.size()) {
+                        List<BerInteger> collect = Stream.of(endPrbUl1)
                                 .map(val -> new BerInteger(val.asInt()))
                                 .collect(Collectors.toList());
                         endPrbUl.setSeqOf(collect);
@@ -264,15 +326,13 @@
                 }
                 rrmConfig.setEndPrbUl(endPrbUl);
             }
-        }
 
-        {
-            JsonNode p0_ue_pusch = rrmConfigNode.path("p0_ue_pusch");
-            if (!p0_ue_pusch.isMissingNode()) {
+            JsonNode uePusch = rrmConfigNode.path("p0_ue_pusch");
+            if (!uePusch.isMissingNode()) {
                 RRMConfig.P0UePusch p0UePusch = new RRMConfig.P0UePusch();
-                if (p0_ue_pusch.isArray()) {
-                    if (ueList.size() == p0_ue_pusch.size()) {
-                        List<BerInteger> collect = Stream.of(p0_ue_pusch)
+                if (uePusch.isArray()) {
+                    if (ueList.size() == uePusch.size()) {
+                        List<BerInteger> collect = Stream.of(uePusch)
                                 .map(val -> new BerInteger(val.asInt()))
                                 .collect(Collectors.toList());
                         p0UePusch.setSeqOf(collect);
@@ -282,14 +342,12 @@
                 }
                 rrmConfig.setP0UePusch(p0UePusch);
             }
-        }
 
-        {
-            JsonNode sub_frame_bitmask_ul = rrmConfigNode.path("sub_frame_bitmask_ul");
-            if (!sub_frame_bitmask_ul.isMissingNode()) {
+            JsonNode frameBitmaskUl = rrmConfigNode.path("sub_frame_bitmask_ul");
+            if (!frameBitmaskUl.isMissingNode()) {
                 RRMConfig.SubframeBitmaskUl subframeBitmaskUl = new RRMConfig.SubframeBitmaskUl();
-                if (sub_frame_bitmask_ul.isArray()) {
-                    List<BerBitString> collect = Stream.of(sub_frame_bitmask_ul)
+                if (frameBitmaskUl.isArray()) {
+                    List<BerBitString> collect = Stream.of(frameBitmaskUl)
                             .map(val -> new BerBitString(DatatypeConverter.parseHexBinary(val.asText()), 10))
                             .collect(Collectors.toList());
 
@@ -299,26 +357,45 @@
                 }
                 rrmConfig.setSubframeBitmaskUl(subframeBitmaskUl);
             }
-        }
 
         rrmConfig.setCrnti(crnti);
     }
 
+    /**
+     * Get QCI values.
+     *
+     * @return QCI values
+     */
     @JsonProperty("QCI")
     public SchedMeasReportPerCell.QciVals getQci() {
         return qci;
     }
 
+    /**
+     * Set QCI values.
+     *
+     * @param qci QCI
+     */
     @JsonProperty("QCI")
     public void setQci(SchedMeasReportPerCell.QciVals qci) {
         this.qci = qci;
     }
 
+    /**
+     * Get L2 measurement config.
+     *
+     * @return L2MeasConfig
+     */
     @JsonProperty("MeasurementConfiguration")
     public L2MeasConfig getMeasConfig() {
         return measConfig;
     }
 
+    /**
+     * Set L2 measurement config.
+     *
+     * @param measConfig l2MeasConfig
+     */
     @JsonProperty("MeasurementConfiguration")
     public void setMeasConfig(L2MeasConfig measConfig) {
         this.measConfig = measConfig;
@@ -337,21 +414,38 @@
                 '}';
     }
 
+    /*
+     * (non-Javadoc)
+     *
+     * @see java.lang.Object#equals()
+     */
     @Override
     public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
 
         RnibCell rnibCell = (RnibCell) o;
 
         return ecgi.equals(rnibCell.ecgi);
     }
 
+    /*
+     * (non-Javadoc)
+     *
+     * @see java.lang.Object#hashCode()
+     */
     @Override
     public int hashCode() {
         return ecgi.hashCode();
     }
 
+    /**
+     * Container class for PRBUsage.
+     */
     @JsonPropertyOrder({
             "primary",
             "secondary",
@@ -364,33 +458,65 @@
         WallClockTimestamp timesincelastupdate;
 
         @JsonCreator
-        public PrbUsageContainer(@JsonProperty("primary") PRBUsage primary, @JsonProperty("secondary") PRBUsage secondary) {
+        public PrbUsageContainer(@JsonProperty("primary") PRBUsage primary,
+                                 @JsonProperty("secondary") PRBUsage secondary) {
             this.primary = primary;
             this.secondary = secondary;
             this.timesincelastupdate = new WallClockTimestamp();
         }
 
+        /**
+         * Get primary PRBUsage.
+         *
+         * @return PRBUsage
+         */
         public PRBUsage getPrimary() {
             return primary;
         }
 
+        /**
+         * Set secondary PRBUsage.
+         *
+         * @param primary PRBUsage
+         */
         public void setPrimary(PRBUsage primary) {
             this.primary = primary;
         }
 
+        /**
+         * Get secondary PRBUsage.
+         *
+         * @return PRBUsage
+         */
         public PRBUsage getSecondary() {
             return secondary;
         }
 
+        /**
+         * Set secondary PRBUsage.
+         *
+         * @param secondary PRBUsage
+         */
         public void setSecondary(PRBUsage secondary) {
             this.secondary = secondary;
         }
 
-        public long getTimesincelastupdate() {
+        /**
+         * Get time since last update.
+         *
+         * @return long Time
+         */
+        public long getTimeSinceLastUpdate() {
             return new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp();
         }
 
-        public void setTimesincelastupdate(WallClockTimestamp timesincelastupdate) {
+
+        /**
+         * Set time since last update.
+         *
+         * @param timesincelastupdate time since last update
+         */
+        public void setTimeSinceLastUpdate(WallClockTimestamp timesincelastupdate) {
             this.timesincelastupdate = timesincelastupdate;
         }
 
@@ -399,7 +525,8 @@
             return "PrbUsageContainer{" +
                     "primary=" + primary +
                     ", secondary=" + secondary +
-                    ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp()) +
+                    ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() -
+                    timesincelastupdate.unixTimestamp()) +
                     '}';
         }
     }
diff --git a/src/main/java/org.onosproject.xran/entities/RnibLink.java b/src/main/java/org.onosproject.xran/entities/RnibLink.java
index 13a0d93..4eb18a8 100644
--- a/src/main/java/org.onosproject.xran/entities/RnibLink.java
+++ b/src/main/java/org.onosproject.xran/entities/RnibLink.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,11 +16,20 @@
 
 package org.onosproject.xran.entities;
 
-import com.fasterxml.jackson.annotation.*;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.google.common.collect.Lists;
 import org.onosproject.store.service.WallClockTimestamp;
-import org.onosproject.xran.codecs.api.*;
+import org.onosproject.xran.codecs.api.ERABParams;
+import org.onosproject.xran.codecs.api.RadioRepPerServCell;
+import org.onosproject.xran.codecs.api.TrafficSplitPercentage;
+import org.onosproject.xran.codecs.api.XICICPA;
+import org.onosproject.xran.codecs.api.SchedMeasRepPerServCell;
+import org.onosproject.xran.codecs.api.PRBUsage;
 import org.onosproject.xran.codecs.ber.types.BerBitString;
 import org.onosproject.xran.codecs.ber.types.BerInteger;
 import org.onosproject.xran.codecs.pdu.PDCPMeasReportPerUe;
@@ -36,7 +45,7 @@
 import java.util.Timer;
 
 /**
- * Created by dimitris on 7/22/17.
+ * R-NIB Link and its properties.
  */
 @JsonPropertyOrder({
         "Link-ID",
@@ -66,9 +75,9 @@
     @JsonProperty("Quality")
     private LinkQuality quality;
     @JsonProperty("PDCP-Throughput")
-    private PDCPThroughput pdcpThroughput;
+    private PdcpThroughput pdcpThroughput;
     @JsonProperty("PDCP-Packet-Delay")
-    private PDCPPacketDelay pdcpPackDelay;
+    private PdcpPacketdelay pdcpPackDelay;
     @JsonProperty("Resource-Usage")
     private ResourceUsage resourceUsage;
     @JsonProperty("Type")
@@ -97,6 +106,11 @@
         rrmParameters.setEcgi(linkId.getEcgi());
     }
 
+    /**
+     * Get timer.
+     *
+     * @return Timer
+     */
     public Timer getTimer() {
         return timer;
     }
@@ -107,201 +121,270 @@
         this.timer = timer;
     }
 
+    /**
+     * Get Link ID.
+     * @return LinkID
+     */
     @JsonProperty("Link-ID")
     public LinkId getLinkId() {
         return linkId;
     }
 
+    /**
+     * Set the Link ID.
+     * @param linkId Link ID
+     */
     @JsonProperty("Link-ID")
     public void setLinkId(LinkId linkId) {
         this.linkId = linkId;
     }
 
+    /**
+     * Set the LINK ID with cell and ue.
+     * @param cell Rnib CELL
+     * @param ue Rnib UE
+     */
     public void setLinkId(RnibCell cell, RnibUe ue) {
         this.linkId = LinkId.valueOf(cell, ue);
         trafficPercent.setEcgi(cell.getEcgi());
     }
 
+    /**
+     * Get the link type.
+     *
+     * @return Link-type
+     */
     @JsonProperty("Type")
     public Type getType() {
         return type;
     }
 
+    /**
+     * Set the link type.
+     * @param type Link-type
+     */
     @JsonProperty("Type")
     public void setType(Type type) {
         this.type = type;
     }
 
+    /**
+     * Get traffic percent.
+     * @return TrafficSplitPercentage
+     */
     @JsonProperty("TrafficPercent")
     public TrafficSplitPercentage getTrafficPercent() {
         return trafficPercent;
     }
 
+    /**
+     * Set traffic percent.
+     * @param trafficPercent TrafficSplitPercentage
+     */
     @JsonProperty("TrafficPercent")
     public void setTrafficPercent(TrafficSplitPercentage trafficPercent) {
         this.trafficPercent = trafficPercent;
     }
 
+    /**
+     * Get the Bearer Parameters.
+     * @return ERABParams
+     */
     @JsonProperty("BearerParameters")
     public ERABParams getBearerParameters() {
         return bearerParameters;
     }
 
+    /**
+     * Set the Bearer Parameters.
+     * @param bearerParameters ERABParams
+     */
     @JsonProperty("BearerParameters")
     public void setBearerParameters(ERABParams bearerParameters) {
         this.bearerParameters = bearerParameters;
     }
 
+    /**
+     * Get Quality.
+     * @return LinkQuality
+     */
     @JsonProperty("Quality")
     public LinkQuality getQuality() {
         return quality;
     }
 
+    /**
+     * Set Quality.
+     * @param quality LinkQuality
+     */
     @JsonProperty("Quality")
     public void setQuality(LinkQuality quality) {
         this.quality = quality;
     }
 
+    /**
+     * Get RRM Configuration.
+     * @return RRMConfig
+     */
     @JsonProperty("RRMConfiguration")
     public RRMConfig getRrmParameters() {
         return rrmParameters;
     }
 
+    /**
+     * Set RRM Configuration.
+     * @param rrmParameters RRMConfig
+     */
     @JsonProperty("RRMConfiguration")
     public void setRrmParameters(RRMConfig rrmParameters) {
         this.rrmParameters = rrmParameters;
     }
 
+    /**
+     * Modify the RRM Config parameters of link.
+     *
+     * @param rrmConfigNode RRMConfig parameters to modify obtained from REST call
+     */
     public void modifyRrmParameters(JsonNode rrmConfigNode) {
-        {
-            JsonNode p_a = rrmConfigNode.path("p_a");
-            if (!p_a.isMissingNode()) {
-                RRMConfig.Pa pa = new RRMConfig.Pa();
 
-                List<XICICPA> collect = Lists.newArrayList();
-                collect.add(new XICICPA(p_a.asInt()));
-                pa.setXICICPA(collect);
-                rrmParameters.setPa(pa);
-            }
+        JsonNode pA = rrmConfigNode.path("p_a");
+        if (!pA.isMissingNode()) {
+            RRMConfig.Pa pa = new RRMConfig.Pa();
+
+            List<XICICPA> collect = Lists.newArrayList();
+            collect.add(new XICICPA(pA.asInt()));
+            pa.setXICICPA(collect);
+            rrmParameters.setPa(pa);
         }
 
-        {
-            JsonNode start_prb_dl = rrmConfigNode.path("start_prb_dl");
-            if (!start_prb_dl.isMissingNode()) {
-                RRMConfig.StartPrbDl startPrbDl = new RRMConfig.StartPrbDl();
+        JsonNode startPrbDl1 = rrmConfigNode.path("start_prb_dl");
+        if (!startPrbDl1.isMissingNode()) {
+            RRMConfig.StartPrbDl startPrbDl = new RRMConfig.StartPrbDl();
 
-                List<BerInteger> collect = Lists.newArrayList();
-                collect.add(new BerInteger(start_prb_dl.asInt()));
-                startPrbDl.setSeqOf(collect);
+            List<BerInteger> collect = Lists.newArrayList();
+            collect.add(new BerInteger(startPrbDl1.asInt()));
+            startPrbDl.setSeqOf(collect);
 
-                rrmParameters.setStartPrbDl(startPrbDl);
-            }
+            rrmParameters.setStartPrbDl(startPrbDl);
         }
 
-        {
-            JsonNode end_prb_dl = rrmConfigNode.path("end_prb_dl");
-            if (!end_prb_dl.isMissingNode()) {
-                RRMConfig.EndPrbDl endPrbDl = new RRMConfig.EndPrbDl();
+        JsonNode endPrbDl1 = rrmConfigNode.path("end_prb_dl");
+        if (!endPrbDl1.isMissingNode()) {
+            RRMConfig.EndPrbDl endPrbDl = new RRMConfig.EndPrbDl();
 
-                List<BerInteger> collect = Lists.newArrayList();
-                collect.add(new BerInteger(end_prb_dl.asInt()));
-                endPrbDl.setSeqOf(collect);
+            List<BerInteger> collect = Lists.newArrayList();
+            collect.add(new BerInteger(endPrbDl1.asInt()));
+            endPrbDl.setSeqOf(collect);
 
-                rrmParameters.setEndPrbDl(endPrbDl);
-            }
+            rrmParameters.setEndPrbDl(endPrbDl);
         }
 
-        {
-            JsonNode sub_frame_bitmask_dl = rrmConfigNode.path("sub_frame_bitmask_dl");
-            if (!sub_frame_bitmask_dl.isMissingNode()) {
-                RRMConfig.SubframeBitmaskDl subframeBitmaskDl = new RRMConfig.SubframeBitmaskDl();
-                List<BerBitString> collect = Lists.newArrayList();
-                
-                byte[] hexString = DatatypeConverter.parseHexBinary(sub_frame_bitmask_dl.asText());
-                collect.add(new BerBitString(hexString, 10));
-                subframeBitmaskDl.setSeqOf(collect);
-                rrmParameters.setSubframeBitmaskDl(subframeBitmaskDl);
-            }
+        JsonNode subFrameBitmaskDl = rrmConfigNode.path("sub_frame_bitmask_dl");
+        if (!subFrameBitmaskDl.isMissingNode()) {
+            RRMConfig.SubframeBitmaskDl subframeBitmaskDl = new RRMConfig.SubframeBitmaskDl();
+            List<BerBitString> collect = Lists.newArrayList();
+
+            byte[] hexString = DatatypeConverter.parseHexBinary(subFrameBitmaskDl.asText());
+            collect.add(new BerBitString(hexString, 10));
+            subframeBitmaskDl.setSeqOf(collect);
+            rrmParameters.setSubframeBitmaskDl(subframeBitmaskDl);
         }
 
-        {
-            JsonNode start_prb_ul = rrmConfigNode.path("start_prb_ul");
-            if (!start_prb_ul.isMissingNode()) {
-                RRMConfig.StartPrbUl startPrbUl = new RRMConfig.StartPrbUl();
+        JsonNode startPrbUl1 = rrmConfigNode.path("start_prb_ul");
+        if (!startPrbUl1.isMissingNode()) {
+            RRMConfig.StartPrbUl startPrbUl = new RRMConfig.StartPrbUl();
 
-                List<BerInteger> collect = Lists.newArrayList();
-                collect.add(new BerInteger(start_prb_ul.asInt()));
-                startPrbUl.setSeqOf(collect);
+            List<BerInteger> collect = Lists.newArrayList();
+            collect.add(new BerInteger(startPrbUl1.asInt()));
+            startPrbUl.setSeqOf(collect);
 
-                rrmParameters.setStartPrbUl(startPrbUl);
-            }
+            rrmParameters.setStartPrbUl(startPrbUl);
         }
 
-        {
-            JsonNode end_prb_ul = rrmConfigNode.path("end_prb_ul");
-            if (!end_prb_ul.isMissingNode()) {
-                RRMConfig.EndPrbUl endPrbUl = new RRMConfig.EndPrbUl();
+        JsonNode endPrbUl1 = rrmConfigNode.path("end_prb_ul");
+        if (!endPrbUl1.isMissingNode()) {
+            RRMConfig.EndPrbUl endPrbUl = new RRMConfig.EndPrbUl();
 
-                List<BerInteger> collect = Lists.newArrayList();
-                collect.add(new BerInteger(end_prb_ul.asInt()));
-                endPrbUl.setSeqOf(collect);
+            List<BerInteger> collect = Lists.newArrayList();
+            collect.add(new BerInteger(endPrbUl1.asInt()));
+            endPrbUl.setSeqOf(collect);
 
-                rrmParameters.setEndPrbUl(endPrbUl);
-            }
+            rrmParameters.setEndPrbUl(endPrbUl);
         }
 
-        {
-            JsonNode p0_ue_pusch = rrmConfigNode.path("p0_ue_pusch");
-            if (!p0_ue_pusch.isMissingNode()) {
-                RRMConfig.P0UePusch p0UePusch = new RRMConfig.P0UePusch();
 
-                List<BerInteger> collect = Lists.newArrayList();
-                collect.add(new BerInteger(p0_ue_pusch.asInt()));
-                p0UePusch.setSeqOf(collect);
+        JsonNode p0UePusch1 = rrmConfigNode.path("p0_ue_pusch");
+        if (!p0UePusch1.isMissingNode()) {
+            RRMConfig.P0UePusch p0UePusch = new RRMConfig.P0UePusch();
 
-                rrmParameters.setP0UePusch(p0UePusch);
-            }
+            List<BerInteger> collect = Lists.newArrayList();
+            collect.add(new BerInteger(p0UePusch1.asInt()));
+            p0UePusch.setSeqOf(collect);
+
+            rrmParameters.setP0UePusch(p0UePusch);
         }
 
-        {
-            JsonNode sub_frame_bitmask_ul = rrmConfigNode.path("sub_frame_bitmask_ul");
-            if (!sub_frame_bitmask_ul.isMissingNode()) {
-                RRMConfig.SubframeBitmaskUl subframeBitmaskUl = new RRMConfig.SubframeBitmaskUl();
-                List<BerBitString> collect = Lists.newArrayList();
+        JsonNode subFrameBitmaskUl = rrmConfigNode.path("sub_frame_bitmask_ul");
+        if (!subFrameBitmaskUl.isMissingNode()) {
+            RRMConfig.SubframeBitmaskUl subframeBitmaskUl = new RRMConfig.SubframeBitmaskUl();
+            List<BerBitString> collect = Lists.newArrayList();
 
-                byte[] hexString = DatatypeConverter.parseHexBinary(sub_frame_bitmask_ul.asText());
-                collect.add(new BerBitString(hexString, 10));
-                subframeBitmaskUl.setSeqOf(collect);
-                rrmParameters.setSubframeBitmaskUl(subframeBitmaskUl);
-            }
+            byte[] hexString = DatatypeConverter.parseHexBinary(subFrameBitmaskUl.asText());
+            collect.add(new BerBitString(hexString, 10));
+            subframeBitmaskUl.setSeqOf(collect);
+            rrmParameters.setSubframeBitmaskUl(subframeBitmaskUl);
         }
     }
 
+    /**
+     * Get PDCP Throughput.
+     * @return PdcpThroughput
+     */
     @JsonProperty("PDCP-Throughput")
-    public PDCPThroughput getPdcpThroughput() {
+    public PdcpThroughput getPdcpThroughput() {
         return pdcpThroughput;
     }
 
+    /**
+     * Set PDCP Throughput.
+     * @param pdcpThroughput PdcpThroughput
+     */
     @JsonProperty("PDCP-Throughput")
-    public void setPdcpThroughput(PDCPThroughput pdcpThroughput) {
+    public void setPdcpThroughput(PdcpThroughput pdcpThroughput) {
         this.pdcpThroughput = pdcpThroughput;
     }
 
+    /**
+     * Get PdcpPackDelay.
+     * @return PdcpPacketdelay
+     */
     @JsonProperty("PDCP-Packet-Delay")
-    public PDCPPacketDelay getPdcpPackDelay() {
+    public PdcpPacketdelay getPdcpPackDelay() {
         return pdcpPackDelay;
     }
 
+    /**
+     * Set PdcpPackDelay.
+     * @param pdcpPackDelay PdcpPacketdelay
+     */
     @JsonProperty("PDCP-Packet-Delay")
-    public void setPdcpPackDelay(PDCPPacketDelay pdcpPackDelay) {
+    public void setPdcpPackDelay(PdcpPacketdelay pdcpPackDelay) {
         this.pdcpPackDelay = pdcpPackDelay;
     }
 
+    /**
+     * Get ResourceUsage.
+     * @return ResourceUsage
+     */
     @JsonProperty("Resource-Usage")
     public ResourceUsage getResourceUsage() {
         return resourceUsage;
     }
 
+    /**
+     * Set ResourceUsage.
+     * @param resourceUsage ResourceUsage
+     */
     @JsonProperty("Resource-Usage")
     public void setResourceUsage(ResourceUsage resourceUsage) {
         this.resourceUsage = resourceUsage;
@@ -325,8 +408,12 @@
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
 
         RnibLink link = (RnibLink) o;
 
@@ -338,30 +425,32 @@
         return linkId.hashCode();
     }
 
+    /**
+     * Enum of Link-Type.
+     */
     public enum Type {
         SERVING_PRIMARY("serving/primary") {
             @Override
             public String toString() {
-                return "\"serving/primary\"";
+                return "serving/primary";
             }
         },
-        // TODO: Add CA/DC
         SERVING_SECONDARY_CA("serving/secondary/ca") {
             @Override
             public String toString() {
-                return "\"serving/secondary/ca\"";
+                return "serving/secondary/ca";
             }
         },
         SERVING_SECONDARY_DC("serving/secondary/dc") {
             @Override
             public String toString() {
-                return "\"serving/secondary/dc\"";
+                return "serving/secondary/dc";
             }
         },
         NON_SERVING("non-serving") {
             @Override
             public String toString() {
-                return "\"non-serving\"";
+                return "non-serving";
             }
         };
 
@@ -371,6 +460,11 @@
             this.name = name;
         }
 
+        /**
+         * Get enum value of link-type.
+         * @param name String representation of Enum Type
+         * @return Type
+         */
         public static Type getEnum(String name) {
             Optional<Type> any = Arrays.stream(Type.values()).filter(typeStr -> typeStr.name.equals(name)).findAny();
             if (any.isPresent()) {
@@ -380,153 +474,247 @@
         }
     }
 
+    /**
+     * Quality of Link.
+     */
     @JsonPropertyOrder({
-            "RX",
-            "CQI",
-            "MCS"
+            "rx",
+            "cqi",
+            "mcs"
     })
     @JsonIgnoreProperties(ignoreUnknown = true)
     public static class LinkQuality {
-        RX RX = null;
-        CQI CQI = null;
-        MCS MCS = null;
+        Rx rx = null;
+        Cqi cqi = null;
+        Mcs mcs = null;
 
-        public LinkQuality.RX getRX() {
-            return RX;
+        /**
+         * Get rx.
+         * @return rx
+         */
+        public Rx getRx() {
+            return rx;
         }
 
-        public void setRX(LinkQuality.RX RX) {
-            this.RX = RX;
+        /**
+         * Set rx.
+         * @param rx rx
+         */
+        public void setRx(Rx rx) {
+            this.rx = rx;
         }
 
-        public LinkQuality.CQI getCQI() {
-            return CQI;
+        /**
+         * Get cqi.
+         * @return cqi
+         */
+        public Cqi getCqi() {
+            return cqi;
         }
 
-        public void setCQI(LinkQuality.CQI CQI) {
-            this.CQI = CQI;
+        /**
+         * Set cqi.
+         * @param cqi cqi
+         */
+        public void setCqi(Cqi cqi) {
+            this.cqi = cqi;
         }
 
-        public LinkQuality.MCS getMCS() {
-            return MCS;
+        /**
+         * Get mcs.
+         * @return mcs
+         */
+        public Mcs getMcs() {
+            return mcs;
         }
 
-        public void setMCS(LinkQuality.MCS MCS) {
-            this.MCS = MCS;
+        /**
+         * Set mcs.
+         * @param mcs mcs
+         */
+        public void setMcs(Mcs mcs) {
+            this.mcs = mcs;
         }
 
+        /**
+         * Class to represent rx.
+         */
         @JsonPropertyOrder({
-                "RSRP",
-                "RSRQ",
+                "rsrp",
+                "rsrq",
                 "timesincelastupdate"
         })
         @JsonIgnoreProperties(ignoreUnknown = true)
-        public static class RX {
-            double RSRP;
-            double RSRQ;
+        public static class Rx {
+            double rsrp;
+            double rsrq;
             WallClockTimestamp timesincelastupdate;
 
             @JsonCreator
-            public RX(@JsonProperty("RSRP") double RSRP, @JsonProperty("RSRQ") double RSRQ) {
-                this.RSRP = RSRP;
-                this.RSRQ = RSRQ;
+            public Rx(@JsonProperty("rsrp") double rsrp, @JsonProperty("rsrq") double rsrq) {
+                this.rsrp = rsrp;
+                this.rsrq = rsrq;
                 this.timesincelastupdate = new WallClockTimestamp();
             }
 
-            public double getRSRP() {
-                return RSRP;
+            /**
+             * Get rsrp.
+             * @return double rsrp
+             */
+            public double getRsrp() {
+                return rsrp;
             }
 
-            public void setRSRP(double RSRP) {
-                this.RSRP = RSRP;
+            /**
+             * Set rsrp.
+             * @param rsrp rsrp
+             */
+            public void setRsrp(double rsrp) {
+                this.rsrp = rsrp;
             }
 
-            public double getRSRQ() {
-                return RSRQ;
+            /**
+             * Get rsrq.
+             * @return double rsrq
+             */
+            public double getRsrq() {
+                return rsrq;
             }
 
-            public void setRSRQ(double RSRQ) {
-                this.RSRQ = RSRQ;
+            /**
+             * Set rsrq.
+             * @param rsrq rsrq
+             */
+            public void setRsrq(double rsrq) {
+                this.rsrq = rsrq;
             }
 
+            /**
+             * Get time since last update.
+             *
+             * @return long Time
+             */
             public long getTimesincelastupdate() {
                 return new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp();
             }
 
+            /**
+             * Set time since last update.
+             *
+             * @param timesincelastupdate time since last update
+             */
             public void setTimesincelastupdate(WallClockTimestamp timesincelastupdate) {
                 this.timesincelastupdate = timesincelastupdate;
             }
 
             @Override
             public String toString() {
-                return "RX{" +
-                        "RSRP=" + RSRP +
-                        ", RSRQ=" + RSRQ +
-                        ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp()) +
+                return "rx{" +
+                        "rsrp=" + rsrp +
+                        ", rsrq=" + rsrq +
+                        ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() -
+                        timesincelastupdate.unixTimestamp()) +
                         '}';
             }
         }
 
         @JsonPropertyOrder({
-                "Hist",
-                "Mode",
-                "Mean",
+                "hist",
+                "mode",
+                "mean",
                 "timesincelastupdate"
         })
         @JsonIgnoreProperties(ignoreUnknown = true)
-        public static class CQI {
-            RadioRepPerServCell.CqiHist Hist;
-            double Mode;
-            double Mean;
+        public static class Cqi {
+            RadioRepPerServCell.CqiHist hist;
+            double mode;
+            double mean;
             WallClockTimestamp timesincelastupdate;
 
             @JsonCreator
-            public CQI(@JsonProperty("Hist") RadioRepPerServCell.CqiHist hist, @JsonProperty("Mode") double mode, @JsonProperty("Mean") double mean) {
-                Hist = hist;
-                Mode = mode;
-                Mean = mean;
+            public Cqi(@JsonProperty("hist") RadioRepPerServCell.CqiHist hist, @JsonProperty("mode") double mode,
+                       @JsonProperty("mean") double mean) {
+                this.hist = hist;
+                this.mode = mode;
+                this.mean = mean;
                 this.timesincelastupdate = new WallClockTimestamp();
             }
 
+
+            /**
+             * Get CQIHist.
+             * @return CqiHist
+             */
             public RadioRepPerServCell.CqiHist getHist() {
-                return Hist;
+                return hist;
             }
 
+            /**
+             * Get CQIHist.
+             * @param hist CqiHist
+             */
             public void setHist(RadioRepPerServCell.CqiHist hist) {
-                Hist = hist;
+                this.hist = hist;
             }
 
+            /**
+             * Get mode.
+             * @return double mode
+             */
             public double getMode() {
-                return Mode;
+                return mode;
             }
 
+            /**
+             * Set mode.
+             * @param mode mode
+             */
             public void setMode(double mode) {
-                Mode = mode;
+                this.mode = mode;
             }
 
+            /**
+             * Get mean.
+             * @return double mean
+             */
             public double getMean() {
-                return Mean;
+                return mean;
             }
 
+            /**
+             * Set mean.
+             * @param mean mean
+             */
             public void setMean(double mean) {
-                Mean = mean;
+                this.mean = mean;
             }
 
+            /**
+             * Get time since last update.
+             *
+             * @return long Time
+             */
             public long getTimesincelastupdate() {
                 return new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp();
             }
 
+            /**
+             * Set time since last update.
+             *
+             * @param timesincelastupdate time since last update
+             */
             public void setTimesincelastupdate(WallClockTimestamp timesincelastupdate) {
                 this.timesincelastupdate = timesincelastupdate;
             }
 
             @Override
             public String toString() {
-                return "CQI{" +
-                        "Hist=" + Hist +
-                        ", Mode=" + Mode +
-                        ", Mean=" + Mean +
-                        ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp()) +
+                return "cqi{" +
+                        "hist=" + hist +
+                        ", mode=" + mode +
+                        ", mean=" + mean +
+                        ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() -
+                        timesincelastupdate.unixTimestamp()) +
                         '}';
             }
         }
@@ -537,48 +725,76 @@
                 "timesincelastupdate"
         })
         @JsonIgnoreProperties(ignoreUnknown = true)
-        public static class MCS {
+        public static class Mcs {
             SchedMeasRepPerServCell.McsDl dl;
             SchedMeasRepPerServCell.McsUl ul;
             WallClockTimestamp timesincelastupdate;
 
             @JsonCreator
-            public MCS(@JsonProperty("dl") SchedMeasRepPerServCell.McsDl dl, @JsonProperty("ul") SchedMeasRepPerServCell.McsUl ul) {
+            public Mcs(@JsonProperty("dl") SchedMeasRepPerServCell.McsDl dl,
+                       @JsonProperty("ul") SchedMeasRepPerServCell.McsUl ul) {
                 this.dl = dl;
                 this.ul = ul;
                 this.timesincelastupdate = new WallClockTimestamp();
             }
 
+            /**
+             * Get DL.
+             * @return Dl
+             */
             public SchedMeasRepPerServCell.McsDl getDl() {
                 return dl;
             }
 
+            /**
+             * Set DL.
+             * @param dl DL
+             */
             public void setDl(SchedMeasRepPerServCell.McsDl dl) {
                 this.dl = dl;
             }
 
+            /**
+             * Get UL.
+             * @return Ul
+             */
             public SchedMeasRepPerServCell.McsUl getUl() {
                 return ul;
             }
 
+            /**
+             * Set UL.
+             * @param ul Ul
+             */
             public void setUl(SchedMeasRepPerServCell.McsUl ul) {
                 this.ul = ul;
             }
 
+            /**
+             * Get time since last update.
+             *
+             * @return long Time
+             */
             public long getTimesincelastupdate() {
                 return new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp();
             }
 
+            /**
+             * Set time since last update.
+             *
+             * @param timesincelastupdate time since last update
+             */
             public void setTimesincelastupdate(WallClockTimestamp timesincelastupdate) {
                 this.timesincelastupdate = timesincelastupdate;
             }
 
             @Override
             public String toString() {
-                return "MCS{" +
+                return "mcs{" +
                         "dl=" + dl +
                         ", ul=" + ul +
-                        ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp()) +
+                        ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() -
+                        timesincelastupdate.unixTimestamp()) +
                         '}';
             }
         }
@@ -590,38 +806,65 @@
             "ul"
     })
     @JsonIgnoreProperties(ignoreUnknown = true)
-    public static class PDCPThroughput {
+    public static class PdcpThroughput {
         WallClockTimestamp timesincelastupdate;
         private PDCPMeasReportPerUe.ThroughputDl dl;
         private PDCPMeasReportPerUe.ThroughputUl ul;
 
         @JsonCreator
-        public PDCPThroughput(@JsonProperty("dl") PDCPMeasReportPerUe.ThroughputDl dl, @JsonProperty("ul") PDCPMeasReportPerUe.ThroughputUl ul) {
+        public PdcpThroughput(@JsonProperty("dl") PDCPMeasReportPerUe.ThroughputDl dl,
+                              @JsonProperty("ul") PDCPMeasReportPerUe.ThroughputUl ul) {
             this.dl = dl;
             this.ul = ul;
             this.timesincelastupdate = new WallClockTimestamp();
         }
 
+        /**
+         * Get DL.
+         * @return Dl
+         */
         public PDCPMeasReportPerUe.ThroughputDl getDl() {
             return dl;
         }
 
+        /**
+         * Set DL.
+         * @param dl DL
+         */
         public void setDl(PDCPMeasReportPerUe.ThroughputDl dl) {
             this.dl = dl;
         }
 
+        /**
+         * Get UL.
+         * @return Ul
+         */
         public PDCPMeasReportPerUe.ThroughputUl getUl() {
             return ul;
         }
 
+        /**
+         * Set UL.
+         * @param ul Ul
+         */
         public void setUl(PDCPMeasReportPerUe.ThroughputUl ul) {
             this.ul = ul;
         }
 
+        /**
+         * Get time since last update.
+         *
+         * @return long Time
+         */
         public long getTimesincelastupdate() {
             return new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp();
         }
 
+        /**
+         * Set time since last update.
+         *
+         * @param timesincelastupdate time since last update
+         */
         public void setTimesincelastupdate(WallClockTimestamp timesincelastupdate) {
             this.timesincelastupdate = timesincelastupdate;
         }
@@ -629,10 +872,11 @@
         @Override
         public String
         toString() {
-            return "PDCPThroughput{" +
+            return "PdcpThroughput{" +
                     "dl=" + dl +
                     ", ul=" + ul +
-                    ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp()) +
+                    ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() -
+                    timesincelastupdate.unixTimestamp()) +
                     '}';
         }
     }
@@ -642,48 +886,76 @@
             "ul"
     })
     @JsonIgnoreProperties(ignoreUnknown = true)
-    public static class PDCPPacketDelay {
+    public static class PdcpPacketdelay {
         PDCPMeasReportPerUe.PktDelayDl dl;
         PDCPMeasReportPerUe.PktDelayUl ul;
         WallClockTimestamp timesincelastupdate;
 
         @JsonCreator
-        public PDCPPacketDelay(@JsonProperty("dl") PDCPMeasReportPerUe.PktDelayDl dl, @JsonProperty("ul") PDCPMeasReportPerUe.PktDelayUl ul) {
+        public PdcpPacketdelay(@JsonProperty("dl") PDCPMeasReportPerUe.PktDelayDl dl,
+                               @JsonProperty("ul") PDCPMeasReportPerUe.PktDelayUl ul) {
             this.dl = dl;
             this.ul = ul;
             this.timesincelastupdate = new WallClockTimestamp();
         }
 
+        /**
+         * Get DL.
+         * @return Dl
+         */
         public PDCPMeasReportPerUe.PktDelayDl getDl() {
             return dl;
         }
 
+        /**
+         * Set DL.
+         * @param dl DL
+         */
         public void setDl(PDCPMeasReportPerUe.PktDelayDl dl) {
             this.dl = dl;
         }
 
+        /**
+         * Get UL.
+         * @return Ul
+         */
         public PDCPMeasReportPerUe.PktDelayUl getUl() {
             return ul;
         }
 
+        /**
+         * Set UL.
+         * @param ul Ul
+         */
         public void setUl(PDCPMeasReportPerUe.PktDelayUl ul) {
             this.ul = ul;
         }
 
+        /**
+         * Get time since last update.
+         *
+         * @return long Time
+         */
         public long getTimesincelastupdate() {
             return new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp();
         }
 
+        /**
+         * Set time since last update.
+         *
+         * @param timesincelastupdate time since last update
+         */
         public void setTimesincelastupdate(WallClockTimestamp timesincelastupdate) {
             this.timesincelastupdate = timesincelastupdate;
         }
 
         @Override
         public String toString() {
-            return "PDCPPacketDelay{" +
+            return "PdcpPacketdelay{" +
                     "dl=" + dl +
                     ", ul=" + ul +
-                    ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp()) +
+                    ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() -
+                    timesincelastupdate.unixTimestamp()) +
                     '}';
         }
     }
@@ -699,32 +971,59 @@
         WallClockTimestamp timesincelastupdate;
 
         @JsonCreator
-        public ResourceUsage(@JsonProperty("dl") PRBUsage.PrbUsageDl dl, @JsonProperty("ul") PRBUsage.PrbUsageUl ul) {
+        public ResourceUsage(@JsonProperty("dl") PRBUsage.PrbUsageDl dl,
+                             @JsonProperty("ul") PRBUsage.PrbUsageUl ul) {
             this.dl = dl;
             this.ul = ul;
             this.timesincelastupdate = new WallClockTimestamp();
         }
 
+        /**
+         * Get DL.
+         * @return Dl
+         */
         public PRBUsage.PrbUsageDl getDl() {
             return dl;
         }
 
+        /**
+         * Set DL.
+         * @param dl DL
+         */
         public void setDl(PRBUsage.PrbUsageDl dl) {
             this.dl = dl;
         }
 
+        /**
+         * Get UL.
+         * @return Ul
+         */
         public PRBUsage.PrbUsageUl getUl() {
             return ul;
         }
 
+        /**
+         * Set UL.
+         * @param ul Ul
+         */
         public void setUl(PRBUsage.PrbUsageUl ul) {
             this.ul = ul;
         }
 
+        /**
+         * Get time since last update.
+         *
+         * @return long Time
+         */
         public long getTimesincelastupdate() {
             return new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp();
         }
 
+        /**
+         * Set time since last update.
+         *
+         * @param timesincelastupdate time since last update
+         */
         public void setTimesincelastupdate(WallClockTimestamp timesincelastupdate) {
             this.timesincelastupdate = timesincelastupdate;
         }
@@ -734,7 +1033,8 @@
             return "ResourceUsage{" +
                     "dl=" + dl +
                     ", ul=" + ul +
-                    ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp()) +
+                    ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() -
+                    timesincelastupdate.unixTimestamp()) +
                     '}';
         }
     }
diff --git a/src/main/java/org.onosproject.xran/entities/RnibSlice.java b/src/main/java/org.onosproject.xran/entities/RnibSlice.java
index 92e1d98..33cea1b 100644
--- a/src/main/java/org.onosproject.xran/entities/RnibSlice.java
+++ b/src/main/java/org.onosproject.xran/entities/RnibSlice.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/main/java/org.onosproject.xran/entities/RnibUe.java b/src/main/java/org.onosproject.xran/entities/RnibUe.java
index 3afcb04..2d6b605 100644
--- a/src/main/java/org.onosproject.xran/entities/RnibUe.java
+++ b/src/main/java/org.onosproject.xran/entities/RnibUe.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -38,7 +38,7 @@
 import static org.onosproject.net.HostId.hostId;
 
 /**
- * Created by dimitris on 7/22/17.
+ * R-NIB UE and its properties.
  */
 @JsonPropertyOrder({
         "ID",
@@ -82,6 +82,11 @@
         timer = new Timer();
     }
 
+    /**
+     * Convert Host ID to UE ID.
+     * @param hostId hostID
+     * @return Long UE ID
+     */
     public static Long hostIdtoUEId(HostId hostId) {
         String mac = hostId.mac().toString();
         mac = mac.replace(":", "");
@@ -89,11 +94,19 @@
         return l;
     }
 
+    /**
+     * Get timer.
+     * @return Timer
+     */
     @JsonIgnore
     public Timer getTimer() {
         return timer;
     }
 
+    /**
+     * Set timer.
+     * @param timer Timer
+     */
     @JsonIgnore
     public void setTimer(Timer timer) {
         this.timer.cancel();
@@ -101,46 +114,82 @@
         this.timer = timer;
     }
 
+    /**
+     * Get MMEUES1APID.
+     * @return MMEUES1APID
+     */
     @JsonProperty("MMEUES1APID")
     public MMEUES1APID getMmeS1apId() {
         return mmeS1apId;
     }
 
+    /**
+     * Set MMEUES1APID.
+     * @param mmeS1apId MMEUES1APID
+     */
     @JsonProperty("MMEUES1APID")
     public void setMmeS1apId(MMEUES1APID mmeS1apId) {
         this.mmeS1apId = mmeS1apId;
     }
 
+    /**
+     * Get ENBUES1APID.
+     * @return ENBUES1APID
+     */
     @JsonProperty("ENBUES1APID")
     public ENBUES1APID getEnbS1apId() {
         return enbS1apId;
     }
 
+    /**
+     * Set ENBUES1APID.
+     * @param enbS1apId ENBUES1APID
+     */
     @JsonProperty("ENBUES1APID")
     public void setEnbS1apId(ENBUES1APID enbS1apId) {
         this.enbS1apId = enbS1apId;
     }
 
+    /**
+     * Get CRNTI.
+     * @return CRNTI
+     */
     @JsonProperty("CRNTI")
     public CRNTI getCrnti() {
         return crnti;
     }
 
+    /**
+     * Set CRNTI.
+     * @param crnti CRNTI
+     */
     @JsonProperty("CRNTI")
     public void setCrnti(CRNTI crnti) {
         this.crnti = crnti;
     }
 
+    /**
+     * Get IMSI.
+     * @return IMSI
+     */
     @JsonProperty("IMSI")
     public String getImsi() {
         return imsi;
     }
 
+    /**
+     * Set IMSI.
+     * @param imsi IMSI
+     */
     @JsonProperty("IMSI")
     public void setImsi(String imsi) {
         this.imsi = imsi;
     }
 
+    /**
+     * Get Host ID.
+     * @return HostId
+     */
     @JsonIgnore
     public HostId getHostId() {
         try {
@@ -180,40 +229,72 @@
         return null;
     }
 
+    /**
+     * Get RXMeasConfig Report.
+     * @return RXSigMeasConfig
+     */
     @JsonProperty("MeasurementConfiguration")
     public RXSigMeasConfig getMeasConfig() {
         return measConfig;
     }
 
+    /**
+     * Set RXMeasConfig Report.
+     * @param measConfig RXSigMeasConfig
+     */
     @JsonProperty("MeasurementConfiguration")
     public void setMeasConfig(RXSigMeasConfig measConfig) {
         this.measConfig = measConfig;
     }
 
+    /**
+     * Get UE Capability Info.
+     * @return UECapabilityInfo
+     */
     @JsonProperty("Capability")
     public UECapabilityInfo getCapability() {
         return capability;
     }
 
+    /**
+     * Set UE Capability Info.
+     * @param capability UECapabilityInfo
+     */
     @JsonProperty("Capability")
     public void setCapability(UECapabilityInfo capability) {
         this.capability = capability;
     }
 
+    /**
+     * Get State.
+     * @return State
+     */
     @JsonProperty("State")
     public State getState() {
         return state;
     }
 
+    /**
+     * Set State.
+     * @param state State
+     */
     @JsonProperty("State")
     public void setState(State state) {
         this.state = state;
     }
 
+    /**
+     * Get UE ID.
+     * @return Long UE ID
+     */
     public Long getId() {
         return id;
     }
 
+    /**
+     * Set UE ID.
+     * @param id Long UE ID
+     */
     public void setId(Long id) {
         this.id = id;
     }
@@ -232,30 +313,48 @@
                 '}';
     }
 
+    /*
+     * (non-Javadoc)
+     *
+     * @see java.lang.Object#equals()
+     */
     @Override
     public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
         RnibUe rnibUe = (RnibUe) o;
         return Objects.equals(id, rnibUe.id);
     }
 
+    /*
+     * (non-Javadoc)
+     *
+     * @see java.lang.Object#hashCode()
+     */
     @Override
     public int hashCode() {
         return Objects.hash(id);
     }
 
+
+    /**
+     * Enum of State of UE.
+     */
     public enum State {
         ACTIVE {
             @Override
             public String toString() {
-                return "\"ACTIVE\"";
+                return "ACTIVE";
             }
         },
         IDLE {
             @Override
             public String toString() {
-                return "\"IDLE\"";
+                return "IDLE";
             }
         }
     }
diff --git a/src/main/java/org.onosproject.xran/entities/package-info.java b/src/main/java/org.onosproject.xran/entities/package-info.java
index 6b2c4c4..be85174 100644
--- a/src/main/java/org.onosproject.xran/entities/package-info.java
+++ b/src/main/java/org.onosproject.xran/entities/package-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/main/java/org.onosproject.xran/identifiers/EcgiCrntiPair.java b/src/main/java/org.onosproject.xran/identifiers/EcgiCrntiPair.java
index 6347788..f12f62a 100644
--- a/src/main/java/org.onosproject.xran/identifiers/EcgiCrntiPair.java
+++ b/src/main/java/org.onosproject.xran/identifiers/EcgiCrntiPair.java
@@ -21,10 +21,13 @@
 import org.onosproject.xran.codecs.api.CRNTI;
 import org.onosproject.xran.codecs.api.ECGI;
 
+/**
+ * Class to maintain pair of ECGI and CRNTI.
+ */
 public class EcgiCrntiPair extends Pair<ECGI, CRNTI> {
 
     /**
-     * Creates a new pair
+     * Creates a new pair.
      *
      * @param key   The key for this pair
      * @param value The value to use for this pair
@@ -33,6 +36,13 @@
         super(key, value);
     }
 
+    /**
+     * Return a new EcgiCrntiPair.
+     *
+     * @param key ECGI
+     * @param value CRNTI
+     * @return EcgiCrntiPair
+     */
     public static EcgiCrntiPair valueOf(ECGI key, CRNTI value) {
         return new EcgiCrntiPair(key, value);
     }
diff --git a/src/main/java/org.onosproject.xran/identifiers/LinkId.java b/src/main/java/org.onosproject.xran/identifiers/LinkId.java
index e2b489a..7bb94f7 100644
--- a/src/main/java/org.onosproject.xran/identifiers/LinkId.java
+++ b/src/main/java/org.onosproject.xran/identifiers/LinkId.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -24,12 +24,15 @@
 import org.onosproject.xran.entities.RnibCell;
 import org.onosproject.xran.entities.RnibUe;
 
+/**
+ * Class for LinkId.
+ */
 @JsonPropertyOrder({
         "ECGI",
         "UEID"
 })
 @JsonIgnoreProperties(ignoreUnknown = true)
-public class LinkId {
+public final class LinkId {
     @JsonIgnore
     private RnibCell cell;
     @JsonIgnore
@@ -40,59 +43,108 @@
         this.ue = ue;
     }
 
+    /**
+     * Create new LinkId.
+     * @param cell Cell
+     * @param ue UE
+     * @return new LinkId
+     */
     public static LinkId valueOf(RnibCell cell, RnibUe ue) {
         return new LinkId(cell, ue);
     }
 
-    public static LinkId valueOf(ECGI ecgi, Long UeId) {
+    /**
+     * Create new LinkID with ECGI and UE ID given.
+     * @param ecgi ECGI of new cell
+     * @param ueId UE ID of new UE
+     * @return LinkId
+     */
+    public static LinkId valueOf(ECGI ecgi, Long ueId) {
         RnibCell cell = new RnibCell();
         RnibUe ue = new RnibUe();
 
         cell.setEcgi(ecgi);
-        ue.setId(UeId);
+        ue.setId(ueId);
         return new LinkId(cell, ue);
     }
 
+    /**
+     * Get ECGI.
+     * @return ECGI
+     */
     @JsonProperty("ECGI")
     public ECGI getEcgi() {
         return cell.getEcgi();
     }
 
+    /**
+     * Set ECGI.
+     * @param sourceId ECGI
+     */
     @JsonProperty("ECGI")
     public void setEcgi(ECGI sourceId) {
         cell.setEcgi(sourceId);
     }
 
+    /**
+     * Get UE ID.
+     * @return long UE ID
+     */
     @JsonProperty("UEID")
     public Long getUeId() {
         return ue.getId();
     }
 
+    /**
+     * Set UE ID.
+     * @param destinationId long UE ID
+     */
     @JsonProperty("UEID")
     public void setUeId(Long destinationId) {
         ue.setId(destinationId);
     }
 
+    /**
+     * Get Cell.
+     * @return Cell
+     */
     @JsonIgnore
     public RnibCell getCell() {
         return cell;
     }
 
+    /**
+     * Set Cell.
+     * @param cell Cell
+     */
     @JsonIgnore
     public void setCell(RnibCell cell) {
         this.cell = cell;
     }
 
+    /**
+     * Get UE.
+     * @return UE
+     */
     @JsonIgnore
     public RnibUe getUe() {
         return ue;
     }
 
+    /**
+     * Set UE.
+     * @param ue UE
+     */
     @JsonIgnore
     public void setUe(RnibUe ue) {
         this.ue = ue;
     }
 
+    /*
+     * (non-Javadoc)
+     *
+     * @see java.lang.Object#equals()
+     */
     @Override
     public boolean equals(Object o) {
         return this == o ||
@@ -103,6 +155,11 @@
 
     }
 
+    /*
+     * (non-Javadoc)
+     *
+     * @see java.lang.Object#hashCode()
+     */
     @Override
     public int hashCode() {
         int result = cell.getEcgi().hashCode();
diff --git a/src/main/java/org.onosproject.xran/identifiers/contextUpdateHandler.java b/src/main/java/org.onosproject.xran/identifiers/contextUpdateHandler.java
index 82fdaed..4372d8b 100644
--- a/src/main/java/org.onosproject.xran/identifiers/contextUpdateHandler.java
+++ b/src/main/java/org.onosproject.xran/identifiers/contextUpdateHandler.java
@@ -20,15 +20,27 @@
 import org.onosproject.xran.codecs.pdu.UEAdmissionStatus;
 import org.onosproject.xran.codecs.pdu.UEContextUpdate;
 
-public class contextUpdateHandler {
+/**
+ * Class to handle UE Context Update packet.
+ */
+public class ContextUpdateHandler {
     private UEContextUpdate contextUpdate;
     private UEAdmissionStatus admissionStatus;
     private HOComplete hoComplete;
 
+    /**
+     * Get Context Update.
+     * @return UEContextUpdate
+     */
     public UEContextUpdate getContextUpdate() {
         return contextUpdate;
     }
 
+    /**
+     * Set Context Update.
+     * @param contextUpdate UEContextUpdate
+     * @return boolean to check context update was for admissionStatus packet or HOComplete packet
+     */
     public boolean setContextUpdate(UEContextUpdate contextUpdate) {
         this.contextUpdate = contextUpdate;
 
@@ -36,20 +48,38 @@
 
     }
 
+    /**
+     * Get UEAdmissionStatus.
+     * @return UEAdmissionStatus
+     */
     public UEAdmissionStatus getAdmissionStatus() {
         return admissionStatus;
     }
 
+    /**
+     * Set UEAdmissionStatus.
+     * @param admissionStatus UEAdmissionStatus
+     * @return boolean contextUpdate exists or not
+     */
     public boolean setAdmissionStatus(UEAdmissionStatus admissionStatus) {
         this.admissionStatus = admissionStatus;
 
         return contextUpdate != null;
     }
 
+    /**
+     * Get HOComplete.
+     * @return HOComplete
+     */
     public HOComplete getHoComplete() {
         return hoComplete;
     }
 
+    /**
+     * Set HOComplete.
+     * @param hoComplete HOComplete
+     * @return boolean contextUpdate exists or not
+     */
     public boolean setHoComplete(HOComplete hoComplete) {
         this.hoComplete = hoComplete;
 
@@ -58,7 +88,7 @@
 
     @Override
     public String toString() {
-        return "contextUpdateHandler{" +
+        return "ContextUpdateHandler{" +
                 "contextUpdate=" + (contextUpdate != null) +
                 ", admissionStatus=" + (admissionStatus != null) +
                 ", hoComplete=" + (hoComplete != null) +
diff --git a/src/main/java/org.onosproject.xran/identifiers/package-info.java b/src/main/java/org.onosproject.xran/identifiers/package-info.java
index 421cee2..d375057 100644
--- a/src/main/java/org.onosproject.xran/identifiers/package-info.java
+++ b/src/main/java/org.onosproject.xran/identifiers/package-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/main/java/org.onosproject.xran/impl/DefaultXranStore.java b/src/main/java/org.onosproject.xran/impl/DefaultXranStore.java
index 19e50ab..9a1a259 100644
--- a/src/main/java/org.onosproject.xran/impl/DefaultXranStore.java
+++ b/src/main/java/org.onosproject.xran/impl/DefaultXranStore.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,7 +19,12 @@
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.collect.Lists;
-import org.apache.felix.scr.annotations.*;
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.apache.felix.scr.annotations.Service;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
 import org.onosproject.core.IdGenerator;
@@ -45,7 +50,7 @@
 import static org.slf4j.LoggerFactory.getLogger;
 
 /**
- * Created by dimitris on 7/22/17.
+ * Default xran store.
  */
 @Component(immediate = true)
 @Service
@@ -67,6 +72,7 @@
     public void activate() {
         ApplicationId appId = coreService.getAppId(XRAN_APP_ID);
 
+        // create ue id generator
         ueIdGenerator = coreService.getIdGenerator("xran-ue-id");
 
         log.info("XRAN Default Store Started");
@@ -85,7 +91,7 @@
     }
 
     @Override
-    public List<RnibLink> getLinksByECGI(ECGI ecgi) {
+    public List<RnibLink> getlinksbyecgi(ECGI ecgi) {
         List<RnibLink> list = Lists.newArrayList();
         list.addAll(
                 linkMap.keySet()
@@ -98,9 +104,9 @@
     }
 
     @Override
-    public List<RnibLink> getLinksByCellId(String eciHex) {
+    public List<RnibLink> getlinksbycellid(String eciHex) {
         List<RnibLink> list = Lists.newArrayList();
-        EUTRANCellIdentifier eci = hexToECI(eciHex);
+        EUTRANCellIdentifier eci = hexToEci(eciHex);
 
         list.addAll(
                 linkMap.keySet()
@@ -113,7 +119,7 @@
     }
 
     @Override
-    public List<RnibLink> getLinksByUeId(long euId) {
+    public List<RnibLink> getlinksbyueid(long euId) {
         List<RnibLink> list = Lists.newArrayList();
 
         list.addAll(
@@ -128,13 +134,13 @@
 
 
     @Override
-    public RnibLink getLinkBetweenCellIdUeId(String eciHex, long euId) {
-        EUTRANCellIdentifier eci = hexToECI(eciHex);
+    public RnibLink getlinkbetweencellidueid(String eciHex, long euId) {
+        EUTRANCellIdentifier eci = hexToEci(eciHex);
 
         Optional<LinkId> first = linkMap.keySet()
                 .stream()
-                .filter(linkId -> linkId.getEcgi().getEUTRANcellIdentifier().equals(eci))
-                .filter(linkId -> linkId.getUeId().equals(euId))
+                .filter(linkId -> linkId.getEcgi().getEUTRANcellIdentifier().equals(eci) &&
+                        linkId.getUeId().equals(euId))
                 .findFirst();
 
         return first.map(linkId -> linkMap.get(linkId)).orElse(null);
@@ -147,12 +153,10 @@
                 // if we add a primary link then change the primary to non serving
                 if (link.getType().equals(RnibLink.Type.SERVING_PRIMARY)) {
                     RnibUe ue = link.getLinkId().getUe();
-                    getLinksByUeId(ue.getId())
-                            .forEach(l -> {
-                                if (l.getType().equals(RnibLink.Type.SERVING_PRIMARY)) {
-                                    l.setType(RnibLink.Type.NON_SERVING);
-                                }
-                            });
+                    getlinksbyueid(ue.getId())
+                            .stream()
+                            .filter(l -> l.getType().equals(RnibLink.Type.SERVING_PRIMARY))
+                            .forEach(l -> l.setType(RnibLink.Type.NON_SERVING));
                 }
                 linkMap.put(link.getLinkId(), link);
             }
@@ -166,13 +170,12 @@
 
     @Override
     public RnibLink getLink(ECGI ecgi, Long ueId) {
-
         LinkId linkId = LinkId.valueOf(ecgi, ueId);
         return linkMap.get(linkId);
     }
 
     @Override
-    public void modifyLinkRrmConf(RnibLink link, JsonNode rrmConf) {
+    public void modifylinkrrmconf(RnibLink link, JsonNode rrmConf) {
         link.modifyRrmParameters(rrmConf);
     }
 
@@ -185,25 +188,24 @@
     }
 
     @Override
-    public List<Object> getCellNodes() {
+    public List<Object> getcellnodes() {
         List<Object> list = Lists.newArrayList();
         list.addAll(cellMap.values());
         return list;
     }
 
     @Override
-    public List<Object> getUeNodes() {
+    public List<Object> getuenodes() {
         List<Object> list = Lists.newArrayList();
         list.addAll(ueMap.values());
         return list;
     }
 
     @Override
-    public Object getByNodeId(String nodeId) {
+    public Object getbynodeid(String nodeId) {
         try {
             return getCell(nodeId);
-        } catch (Exception e) {
-
+        } catch (Exception ignored) {
         }
         return getUe(Long.parseLong(nodeId));
     }
@@ -222,9 +224,13 @@
 
     @Override
     public RnibCell getCell(String hexeci) {
-        EUTRANCellIdentifier eci = hexToECI(hexeci);
-        Optional<ECGI> first = cellMap.keySet().stream().filter(ecgi -> ecgi.getEUTRANcellIdentifier().equals(eci)).findFirst();
-        return first.map(ecgi -> cellMap.get(ecgi)).orElse(null);
+        EUTRANCellIdentifier eci = hexToEci(hexeci);
+        Optional<ECGI> first = cellMap.keySet()
+                .stream()
+                .filter(ecgi -> ecgi.getEUTRANcellIdentifier().equals(eci))
+                .findFirst();
+        return first.map(ecgi -> cellMap.get(ecgi))
+                .orElse(null);
     }
 
     @Override
@@ -233,9 +239,11 @@
     }
 
     @Override
-    public void modifyCellRrmConf(RnibCell cell, JsonNode rrmConf) throws Exception {
-        List<RnibLink> linkList = getLinksByECGI(cell.getEcgi());
-        List<RnibUe> ueList = linkList.stream().map(link -> link.getLinkId().getUe()).collect(Collectors.toList());
+    public void modifycellrrmconf(RnibCell cell, JsonNode rrmConf) throws Exception {
+        List<RnibLink> linkList = getlinksbyecgi(cell.getEcgi());
+        List<RnibUe> ueList = linkList.stream()
+                .map(link -> link.getLinkId().getUe())
+                .collect(Collectors.toList());
 
         cell.modifyRrmConfig(rrmConf, ueList);
     }
@@ -285,7 +293,13 @@
         return ueMap.get(ueId);
     }
 
-    private EUTRANCellIdentifier hexToECI(String eciHex) {
+    /**
+     * Get from HEX string the according ECI class object.
+     *
+     * @param eciHex HEX string
+     * @return ECI object if created successfully
+     */
+    private EUTRANCellIdentifier hexToEci(String eciHex) {
         byte[] hexBinary = DatatypeConverter.parseHexBinary(eciHex);
         return new EUTRANCellIdentifier(hexBinary, 28);
     }
diff --git a/src/main/java/org.onosproject.xran/impl/DistributedXranStore.java b/src/main/java/org.onosproject.xran/impl/DistributedXranStore.java
index 0e9f3d5..6f3a5dc 100644
--- a/src/main/java/org.onosproject.xran/impl/DistributedXranStore.java
+++ b/src/main/java/org.onosproject.xran/impl/DistributedXranStore.java
@@ -1,5 +1,5 @@
 ///*
-// * Copyright 2015-present Open Networking Laboratory
+// * Copyright 2015-present Open Networking Foundation
 // *
 // * Licensed under the Apache License, Version 2.0 (the "License");
 // * you may not use this file except in compliance with the License.
@@ -149,7 +149,7 @@
 //    }
 //
 //    @Override
-//    public List<RnibLink> getLinksByCellId(long cellId) {
+//    public List<RnibLink> getlinksbycellid(long cellId) {
 //        List<RnibLink> list = Lists.newArrayList();
 //        CellId cell = CellId.valueOf(cellId);
 //        linkMap.keySet().forEach(
@@ -163,7 +163,7 @@
 //    }
 //
 //    @Override
-//    public List<RnibLink> getLinksByUeId(long euId) {
+//    public List<RnibLink> getlinksbyueid(long euId) {
 //        List<RnibLink> list = Lists.newArrayList();
 //        UeId ue = UeId.valueOf(euId);
 //        linkMap.keySet().forEach(
@@ -177,7 +177,7 @@
 //    }
 //
 //    @Override
-//    public RnibLink getLinkBetweenCellIdUeId(long cellId, long euId) {
+//    public RnibLink getlinkbetweencellidueid(long cellId, long euId) {
 //        LinkId linkId = LinkId.valueOf(cellId, euId);
 //        final Versioned<RnibLink> rnibLinkVersioned = linkMap.get(linkId);
 //        if (rnibLinkVersioned != null) {
@@ -188,7 +188,7 @@
 //
 //    @Override
 //    public boolean modifyTypeOfLink(long cellId, long euId, String type) {
-//        final RnibLink link = getLinkBetweenCellIdUeId(cellId, euId);
+//        final RnibLink link = getlinkbetweencellidueid(cellId, euId);
 //        if (link != null) {
 //            link.setType(type);
 //            return true;
@@ -198,7 +198,7 @@
 //
 //    @Override
 //    public boolean modifyTrafficPercentOfLink(long cellId, long euId, long trafficPercent) {
-//        final RnibLink link = getLinkBetweenCellIdUeId(cellId, euId);
+//        final RnibLink link = getlinkbetweencellidueid(cellId, euId);
 //        if (link != null) {
 //            link.setTrafficPercent(trafficPercent);
 //            return true;
@@ -232,21 +232,21 @@
 //    }
 //
 //    @Override
-//    public List<RnibCell> getCellNodes() {
+//    public List<RnibCell> getcellnodes() {
 //        List<RnibCell> list = Lists.newArrayList();
 //        cellMap.values().forEach(v -> list.add(v.value()));
 //        return list;
 //    }
 //
 //    @Override
-//    public List<RnibUe> getUeNodes() {
+//    public List<RnibUe> getuenodes() {
 //        List<RnibUe> list = Lists.newArrayList();
 //        ueMap.values().forEach(v -> list.add(v.value()));
 //        return list;
 //    }
 //
 //    @Override
-//    public Object getByNodeId(long nodeId) {
+//    public Object getbynodeid(long nodeId) {
 //        CellId cellId = CellId.valueOf(nodeId);
 //        if (cellMap.containsKey(cellId)) {
 //            return cellMap.get(cellId).value();
@@ -276,7 +276,7 @@
 //    }
 //
 //    @Override
-//    public boolean modifyCellRrmConf(JsonNode rrmConf) {
+//    public boolean modifycellrrmconf(JsonNode rrmConf) {
 //        return false;
 //    }
 //
diff --git a/src/main/java/org.onosproject.xran/impl/XranConfig.java b/src/main/java/org.onosproject.xran/impl/XranConfig.java
index eac3317..e334892 100644
--- a/src/main/java/org.onosproject.xran/impl/XranConfig.java
+++ b/src/main/java/org.onosproject.xran/impl/XranConfig.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +17,7 @@
 package org.onosproject.xran.impl;
 
 import com.fasterxml.jackson.databind.JsonNode;
+import org.onlab.packet.IpAddress;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.net.config.Config;
 import org.onosproject.xran.codecs.api.ECGI;
@@ -33,6 +34,9 @@
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
+/**
+ * Xran config.
+ */
 public class XranConfig extends Config<ApplicationId> {
 
     private static final String CELLS = "active_cells";
@@ -63,8 +67,13 @@
 
     private final Logger log = LoggerFactory.getLogger(getClass());
 
-    public Map<String, ECGI> activeCellSet() {
-        Map<String, ECGI> cells = new ConcurrentHashMap<>();
+    /**
+     * Get a list of all CELLs inside the configuration file.
+     *
+     * @return Map of CELL IP to ECGI
+     */
+    public Map<IpAddress, ECGI> activeCellSet() {
+        Map<IpAddress, ECGI> cells = new ConcurrentHashMap<>();
 
         JsonNode cellsNode = object.get(CELLS);
         if (cellsNode == null) {
@@ -73,58 +82,110 @@
         }
 
         cellsNode.forEach(cellNode -> {
-            String plmn_id = cellNode.get(PLMN_ID).asText();
+            String plmnId = cellNode.get(PLMN_ID).asText();
             String eci = cellNode.get(ECI_ID).asText();
 
             String ipAddress = cellNode.get(IP_ADDR).asText();
 
-            ECGI ecgi = hexToECGI(plmn_id, eci);
-            cells.put(ipAddress, ecgi);
+            ECGI ecgi = hexToEcgi(plmnId, eci);
+            cells.put(IpAddress.valueOf(ipAddress), ecgi);
         });
 
         return cells;
     }
 
+    /**
+     * Get flag for ADMISSION_SUCCESS field in configuration.
+     *
+     * @return boolean value in configuration
+     */
     public boolean admissionFlag() {
         JsonNode flag = object.get(ADMISSION_SUCCESS);
         return flag != null && flag.asBoolean();
     }
 
+    /**
+     * Get flag for BEARER_SUCCESS field in configuration.
+     *
+     * @return boolean value in configuration
+     */
     public boolean bearerFlag() {
         JsonNode flag = object.get(BEARER_SUCCESS);
         return flag != null && flag.asBoolean();
     }
 
+    /**
+     * Get port for xRAN controller server to bind to from configuration.
+     *
+     * @return port number
+     */
     public int getXrancPort() {
         return object.get(XRANC_PORT).asInt();
     }
 
+    /**
+     * Get config request interval from configuration.
+     *
+     * @return interval in seconds
+     */
     public int getConfigRequestInterval() {
         return object.get(XRANC_CELLCONFIG_INTERVAL).asInt();
     }
 
+    /**
+     * Get rx signal interval from configuration.
+     *
+     * @return interval in milliseconds
+     */
     public int getRxSignalInterval() {
         return object.get(RX_SIGNAL_MEAS_REPORT_INTERVAL).asInt();
     }
 
+    /**
+     * Get l2 measurement interval from configuration.
+     *
+     * @return interval in milliseconds
+     */
     public int getL2MeasInterval() {
         return object.get(L2_MEAS_REPORT_INTERVAL).asInt();
     }
 
+    /**
+     * Get removal time of link after not getting measurement from configuration.
+     *
+     * @return interval in milliseconds
+     */
     public int getNoMeasLinkRemoval() {
         return object.get(NO_MEAS_LINK_REMOVAL).asInt();
     }
 
+    /**
+     * Get removal time of UE after being IDLE from configuration.
+     *
+     * @return interval in milliseconds
+     */
     public int getIdleUeRemoval() {
         return object.get(IDLE_UE_REMOVAL).asInt();
     }
 
+    /**
+     * Get northbound timeout when waiting for responses from configuration.
+     *
+     * @return interval in milliseconds
+     */
     public int getNorthBoundTimeout() {
         return object.get(NORTHBOUND_TIMEOUT).asInt();
     }
 
-    private ECGI hexToECGI(String plmn_id, String eci) {
-        byte[] bytes = HexConverter.fromShortHexString(plmn_id);
+    /**
+     * Get ECGI from HEX representation of PLMN_ID and ECI.
+     *
+     * @param plmnId  HEX string of PLMN_ID
+     * @param eci     HEX string of ECI
+     * @return new ECGI object
+     */
+    private ECGI hexToEcgi(String plmnId, String eci) {
+        byte[] bytes = HexConverter.fromShortHexString(plmnId);
         byte[] bytearray = DatatypeConverter.parseHexBinary(eci);
 
         InputStream inputStream = new ByteArrayInputStream(bytearray);
diff --git a/src/main/java/org.onosproject.xran/impl/package-info.java b/src/main/java/org.onosproject.xran/impl/package-info.java
index baf9a19..83cd67e 100644
--- a/src/main/java/org.onosproject.xran/impl/package-info.java
+++ b/src/main/java/org.onosproject.xran/impl/package-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/main/java/org.onosproject.xran/package-info.java b/src/main/java/org.onosproject.xran/package-info.java
index 55d9357..2cb39bf 100644
--- a/src/main/java/org.onosproject.xran/package-info.java
+++ b/src/main/java/org.onosproject.xran/package-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,6 +15,6 @@
  */
 
 /**
- * VTN web that used rest to creat vtn resources.
+ * Created by dimitris on 7/20/17.
  */
 package org.onosproject.xran;
diff --git a/src/main/java/org.onosproject.xran/providers/CellDeviceProvider.java b/src/main/java/org.onosproject.xran/providers/CellDeviceProvider.java
index af2a24a..a0a5809 100644
--- a/src/main/java/org.onosproject.xran/providers/CellDeviceProvider.java
+++ b/src/main/java/org.onosproject.xran/providers/CellDeviceProvider.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,10 +16,24 @@
 
 package org.onosproject.xran.providers;
 
-import org.apache.felix.scr.annotations.*;
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.onlab.packet.ChassisId;
-import org.onosproject.net.*;
-import org.onosproject.net.device.*;
+import org.onosproject.net.AnnotationKeys;
+import org.onosproject.net.DefaultAnnotations;
+import org.onosproject.net.Device;
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.MastershipRole;
+import org.onosproject.net.PortNumber;
+import org.onosproject.net.SparseAnnotations;
+import org.onosproject.net.device.DefaultDeviceDescription;
+import org.onosproject.net.device.DeviceDescription;
+import org.onosproject.net.device.DeviceProvider;
+import org.onosproject.net.device.DeviceProviderRegistry;
+import org.onosproject.net.device.DeviceProviderService;
 import org.onosproject.net.provider.AbstractProvider;
 import org.onosproject.net.provider.ProviderId;
 import org.onosproject.xran.controller.XranController;
@@ -27,14 +41,12 @@
 import org.slf4j.Logger;
 
 import static org.onosproject.net.DeviceId.deviceId;
-import static org.onosproject.xran.entities.RnibCell.*;
+import static org.onosproject.xran.entities.RnibCell.uri;
 import static org.slf4j.LoggerFactory.getLogger;
 
-
 /**
- * Created by dimitris on 7/27/17.
+ * Cell device provider.
  */
-
 @Component(immediate = true)
 public class CellDeviceProvider extends AbstractProvider implements DeviceProvider {
 
@@ -87,6 +99,9 @@
 
     }
 
+    /**
+     * Internal device listener.
+     */
     private class InternalDeviceListener implements XranDeviceListener {
 
         @Override
@@ -95,6 +110,7 @@
                 return;
             }
 
+            // use ECGI as device ID URI
             DeviceId id = deviceId(uri(cell.getEcgi()));
 
             ChassisId cId = new ChassisId(id.hashCode());
diff --git a/src/main/java/org.onosproject.xran/providers/UeProvider.java b/src/main/java/org.onosproject.xran/providers/UeProvider.java
index 435c78a..e84deb2 100644
--- a/src/main/java/org.onosproject.xran/providers/UeProvider.java
+++ b/src/main/java/org.onosproject.xran/providers/UeProvider.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,9 +17,19 @@
 package org.onosproject.xran.providers;
 
 import com.google.common.collect.Sets;
-import org.apache.felix.scr.annotations.*;
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.onlab.packet.VlanId;
-import org.onosproject.net.*;
+import org.onosproject.net.AnnotationKeys;
+import org.onosproject.net.DefaultAnnotations;
+import org.onosproject.net.Host;
+import org.onosproject.net.HostId;
+import org.onosproject.net.HostLocation;
+import org.onosproject.net.PortNumber;
+import org.onosproject.net.SparseAnnotations;
 import org.onosproject.net.host.DefaultHostDescription;
 import org.onosproject.net.host.HostProvider;
 import org.onosproject.net.host.HostProviderRegistry;
@@ -33,14 +43,13 @@
 
 import java.util.Set;
 
-import static org.onosproject.net.DeviceId.*;
-import static org.onosproject.xran.entities.RnibCell.*;
+import static org.onosproject.net.DeviceId.deviceId;
+import static org.onosproject.xran.entities.RnibCell.uri;
 import static org.slf4j.LoggerFactory.getLogger;
 
 /**
- * Created by dimitris on 7/28/17.
+ * UE Provider.
  */
-
 @Component(immediate = true)
 public class UeProvider extends AbstractProvider implements HostProvider {
 
@@ -78,6 +87,9 @@
 
     }
 
+    /**
+     * Internal host listener.
+     */
     class InternalHostListener implements XranHostListener {
 
         @Override
@@ -94,12 +106,15 @@
             try {
                 Set<HostLocation> hostLocations = Sets.newConcurrentHashSet();
 
-                ecgiSet.forEach(ecgi -> hostLocations.add(new HostLocation(deviceId(uri(ecgi)), PortNumber.portNumber(0), 0)));
+                ecgiSet.forEach(ecgi -> hostLocations
+                        .add(new HostLocation(deviceId(uri(ecgi)),
+                                PortNumber.portNumber(0), 0)));
 
                 SparseAnnotations annotations = DefaultAnnotations.builder()
                         .set(AnnotationKeys.NAME, "UE " + ue.getId())
                         .build();
 
+                // Host ID is calculated from UE ID with some hacky function to represent a MAC address.
                 DefaultHostDescription desc = new DefaultHostDescription(
                         ue.getHostId().mac(),
                         VlanId.vlanId(VlanId.UNTAGGED),
diff --git a/src/main/java/org.onosproject.xran/providers/XranDeviceListener.java b/src/main/java/org.onosproject.xran/providers/XranDeviceListener.java
index 01f0e95..10da57e 100644
--- a/src/main/java/org.onosproject.xran/providers/XranDeviceListener.java
+++ b/src/main/java/org.onosproject.xran/providers/XranDeviceListener.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,11 +20,21 @@
 import org.onosproject.xran.entities.RnibCell;
 
 /**
- * Created by dimitris on 7/27/17.
+ * Xran Device Listener.
  */
 public interface XranDeviceListener {
 
+    /**
+     * Add new CELL as a device.
+     *
+     * @param id CELL entity
+     */
     void deviceAdded(RnibCell id);
 
+    /**
+     * Remove CELL.
+     *
+     * @param id CELL ECGI as device id
+     */
     void deviceRemoved(DeviceId id);
 }
diff --git a/src/main/java/org.onosproject.xran/providers/XranHostListener.java b/src/main/java/org.onosproject.xran/providers/XranHostListener.java
index 79676e3..d545018 100644
--- a/src/main/java/org.onosproject.xran/providers/XranHostListener.java
+++ b/src/main/java/org.onosproject.xran/providers/XranHostListener.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,11 +23,22 @@
 import java.util.Set;
 
 /**
- * Created by dimitris on 7/28/17.
+ * Xran Host Listener.
  */
 public interface XranHostListener {
 
+    /**
+     * Add UE as a host with location the primary link.
+     *
+     * @param ue      UE entity
+     * @param ecgiSet All connected CELLs to this UE
+     */
     void hostAdded(RnibUe ue, Set<ECGI> ecgiSet);
 
+    /**
+     * Remove UE based on Host Id.
+     *
+     * @param id Host Id generated from UE id
+     */
     void hostRemoved(HostId id);
 }
diff --git a/src/main/java/org.onosproject.xran/providers/package-info.java b/src/main/java/org.onosproject.xran/providers/package-info.java
index a3ee964..608d5f6 100644
--- a/src/main/java/org.onosproject.xran/providers/package-info.java
+++ b/src/main/java/org.onosproject.xran/providers/package-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/main/java/org.onosproject.xran/rest/CellWebResource.java b/src/main/java/org.onosproject.xran/rest/CellWebResource.java
index 86438d5..54accd3 100644
--- a/src/main/java/org.onosproject.xran/rest/CellWebResource.java
+++ b/src/main/java/org.onosproject.xran/rest/CellWebResource.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-present Open Networking Laboratory
+ * Copyright 2016-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,17 +22,16 @@
 import org.onosproject.xran.XranStore;
 import org.onosproject.xran.annotations.Patch;
 import org.onosproject.xran.controller.XranController;
-import org.onosproject.xran.controller.XranControllerImpl;
 import org.onosproject.xran.entities.RnibCell;
-import org.onosproject.xran.rest.ResponseHelper.statusCode;
+import org.onosproject.xran.rest.ResponseHelper.StatusCode;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.ws.rs.Consumes;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
+import javax.ws.rs.Consumes;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import java.io.InputStream;
@@ -52,10 +51,10 @@
     }
 
     /**
-     * test.
+     * Lists the cell with {cellid}.
      *
-     * @param eciHex test
-     * @return test
+     * @param eciHex EutranCellIdentifier in binary
+     * @return Response
      */
     @GET
     @Path("{cellid}")
@@ -69,7 +68,7 @@
 
                 return ResponseHelper.getResponse(
                         mapper(),
-                        statusCode.OK,
+                        StatusCode.OK,
                         jsonNode
                 );
 
@@ -80,7 +79,7 @@
 
                 return ResponseHelper.getResponse(
                         mapper(),
-                        statusCode.INTERNAL_SERVER_ERROR,
+                        StatusCode.INTERNAL_SERVER_ERROR,
                         "Exception",
                         fullStackTrace
                 );
@@ -89,18 +88,18 @@
 
         return ResponseHelper.getResponse(
                 mapper(),
-                statusCode.NOT_FOUND,
+                StatusCode.NOT_FOUND,
                 "Not Found",
                 "Cell with " + eciHex + " was not found"
         );
     }
 
     /**
-     * test.
+     * Modify the RRMConfig parameters of the cell.
      *
-     * @param eciHex test
-     * @param stream test (body of request)
-     * @return test
+     * @param eciHex EutranCellIdentifier in binary
+     * @param stream Parameters that you want to modify
+     * @return Response
      */
     @Patch
     @Path("{cellid}")
@@ -116,23 +115,24 @@
                 JsonNode rrmConf = jsonTree.path("RRMConf");
                 if (!rrmConf.isMissingNode()) {
                     final SynchronousQueue<String>[] queue = new SynchronousQueue[1];
-                    get(XranStore.class).modifyCellRrmConf(cell, rrmConf);
+                    get(XranStore.class).modifycellrrmconf(cell, rrmConf);
 
-                    queue[0] = get(XranController.class).sendModifiedRRMConf(cell.getRrmConfig(),
+                    queue[0] = get(XranController.class).sendmodifiedrrmconf(cell.getRrmConfig(),
                             cell.getVersion() <= 3);
-                    String poll = queue[0].poll(get(XranController.class).getNorthbound_timeout(), TimeUnit.MILLISECONDS);
+                    String poll = queue[0].poll(get(XranController.class)
+                            .getNorthboundTimeout(), TimeUnit.MILLISECONDS);
 
                     if (poll != null) {
                         return ResponseHelper.getResponse(
                                 mapper(),
-                                statusCode.OK,
+                                StatusCode.OK,
                                 "Handoff Response",
                                 poll
                         );
                     } else {
                         return ResponseHelper.getResponse(
                                 mapper(),
-                                statusCode.REQUEST_TIMEOUT,
+                                StatusCode.REQUEST_TIMEOUT,
                                 "Handoff Timeout",
                                 "eNodeB did not send a HOComplete/HOFailure on time"
                         );
@@ -141,7 +141,7 @@
 
                 return ResponseHelper.getResponse(
                         mapper(),
-                        ResponseHelper.statusCode.BAD_REQUEST,
+                        StatusCode.BAD_REQUEST,
                         "Bad Request",
                         "The command you specified is not implemented or doesn't exist. We support " +
                                 "RRMConf commands."
@@ -153,7 +153,7 @@
 
                 return ResponseHelper.getResponse(
                         mapper(),
-                        statusCode.INTERNAL_SERVER_ERROR,
+                        StatusCode.INTERNAL_SERVER_ERROR,
                         "Exception",
                         fullStackTrace
                 );
@@ -162,7 +162,7 @@
 
         return ResponseHelper.getResponse(
                 mapper(),
-                statusCode.NOT_FOUND,
+                StatusCode.NOT_FOUND,
                 "Not Found",
                 "Cell " + eciHex + " was not found"
         );
diff --git a/src/main/java/org.onosproject.xran/rest/LinkWebResource.java b/src/main/java/org.onosproject.xran/rest/LinkWebResource.java
index 20780b3..420d7b4 100644
--- a/src/main/java/org.onosproject.xran/rest/LinkWebResource.java
+++ b/src/main/java/org.onosproject.xran/rest/LinkWebResource.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-present Open Networking Laboratory
+ * Copyright 2016-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,7 +15,6 @@
  */
 package org.onosproject.xran.rest;
 
-import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.collect.Lists;
@@ -23,23 +22,22 @@
 import org.onosproject.rest.AbstractWebResource;
 import org.onosproject.xran.XranStore;
 import org.onosproject.xran.annotations.Patch;
+import org.onosproject.xran.codecs.ber.types.BerInteger;
 import org.onosproject.xran.controller.XranController;
-import org.onosproject.xran.controller.XranControllerImpl;
 import org.onosproject.xran.entities.RnibCell;
 import org.onosproject.xran.entities.RnibLink;
 import org.onosproject.xran.entities.RnibUe;
-import org.onosproject.xran.codecs.ber.types.BerInteger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.ws.rs.Consumes;
 import javax.ws.rs.DefaultValue;
 import javax.ws.rs.GET;
-import javax.ws.rs.POST;
 import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.Produces;
+import javax.ws.rs.POST;
+import javax.ws.rs.PathParam;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import java.io.InputStream;
@@ -62,11 +60,11 @@
     }
 
     /**
-     * test.
+     * List all the links originating or terminating at cell/UE OR list the link connecting between cell and UE.
      *
-     * @param eciHex test
-     * @param ue     test
-     * @return test
+     * @param eciHex EutranCellIdentifier in binary
+     * @param ue     UE ID
+     * @return Response
      */
     @GET
     @Produces(MediaType.APPLICATION_JSON)
@@ -74,14 +72,14 @@
                                     @DefaultValue("-1") @QueryParam("ue") long ue) {
         List<RnibLink> list = Lists.newArrayList();
         if (!eciHex.isEmpty() && ue != -1) {
-            RnibLink link = get(XranStore.class).getLinkBetweenCellIdUeId(eciHex, ue);
+            RnibLink link = get(XranStore.class).getlinkbetweencellidueid(eciHex, ue);
             if (link != null) {
                 list.add(link);
             }
         } else if (!eciHex.isEmpty()) {
-            list.addAll(get(XranStore.class).getLinksByCellId(eciHex));
+            list.addAll(get(XranStore.class).getlinksbycellid(eciHex));
         } else if (ue != -1) {
-            list.addAll(get(XranStore.class).getLinksByUeId(ue));
+            list.addAll(get(XranStore.class).getlinksbyueid(ue));
         } else {
             list.addAll(get(XranStore.class).getLinks());
         }
@@ -92,7 +90,7 @@
 
                 return ResponseHelper.getResponse(
                         mapper(),
-                        ResponseHelper.statusCode.OK,
+                        ResponseHelper.StatusCode.OK,
                         jsonNode
                 );
             } catch (Exception e) {
@@ -102,7 +100,7 @@
 
                 return ResponseHelper.getResponse(
                         mapper(),
-                        ResponseHelper.statusCode.INTERNAL_SERVER_ERROR,
+                        ResponseHelper.StatusCode.INTERNAL_SERVER_ERROR,
                         "Exception",
                         fullStackTrace
                 );
@@ -111,49 +109,52 @@
 
         return ResponseHelper.getResponse(
                 mapper(),
-                ResponseHelper.statusCode.NOT_FOUND,
+                ResponseHelper.StatusCode.NOT_FOUND,
                 "Not Found",
                 "Specified links not found"
         );
     }
 
     /**
-     * test.
+     * Modify the link.
      *
-     * @param src    test
-     * @param dst    test
-     * @param stream test
-     * @return test
+     * @param src    CELL ECI in binary
+     * @param dst    UE ID
+     * @param stream Parameter on basis of which link is to be modified
+     * @return Response
      */
     @Patch
     @Path("{src},{dst}")
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
     public Response patchLinks(@PathParam("src") String src, @PathParam("dst") long dst, InputStream stream) {
-        RnibLink link = get(XranStore.class).getLinkBetweenCellIdUeId(src, dst);
+        RnibLink link = get(XranStore.class).getlinkbetweencellidueid(src, dst);
         if (link != null) {
             try {
                 ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream);
 
+                // Modify link based on Type
                 JsonNode type = jsonTree.path("type");
                 if (!type.isMissingNode()) {
                     RnibLink.Type anEnum = RnibLink.Type.getEnum(type.asText());
                     return handleTypeChange(link, anEnum);
                 }
 
+                // Modify link based on traffic percent
                 JsonNode trafficpercent = jsonTree.path("trafficpercent");
                 if (!trafficpercent.isMissingNode()) {
                     return handleTrafficChange(link, trafficpercent);
                 }
 
+                // Modify link based on RRMConf
                 JsonNode rrmConf = jsonTree.path("RRMConf");
                 if (!rrmConf.isMissingNode()) {
-                    return handleRRMChange(link, rrmConf);
+                    return handleRrmChange(link, rrmConf);
                 }
 
                 return ResponseHelper.getResponse(
                         mapper(),
-                        ResponseHelper.statusCode.NOT_IMPLEMENTED,
+                        ResponseHelper.StatusCode.NOT_IMPLEMENTED,
                         "Not Implemented",
                         "The command you specified is not implemented or doesn't exist. We support " +
                                 "type/RRMConf/traficpercent commands."
@@ -166,7 +167,7 @@
 
                 return ResponseHelper.getResponse(
                         mapper(),
-                        ResponseHelper.statusCode.INTERNAL_SERVER_ERROR,
+                        ResponseHelper.StatusCode.INTERNAL_SERVER_ERROR,
                         "Exception",
                         fullStackTrace
                 );
@@ -175,19 +176,19 @@
 
         return ResponseHelper.getResponse(
                 mapper(),
-                ResponseHelper.statusCode.NOT_FOUND,
+                ResponseHelper.StatusCode.NOT_FOUND,
                 "Not Found",
                 "Link not found use POST request"
         );
     }
 
     /**
-     * test.
+     * Create link based on Type of the link.
      *
-     * @param src    test
-     * @param dst    test
-     * @param stream test
-     * @return test
+     * @param src    CELL ECI in binary
+     * @param dst    UE ID
+     * @param stream LinkType
+     * @return Response
      */
     @POST
     @Path("{src},{dst}")
@@ -200,7 +201,7 @@
         if (cell == null) {
             return ResponseHelper.getResponse(
                     mapper(),
-                    ResponseHelper.statusCode.NOT_FOUND,
+                    ResponseHelper.StatusCode.NOT_FOUND,
                     "Not Found",
                     "Cell " + src + " was not found"
             );
@@ -209,7 +210,7 @@
         if (ue == null) {
             return ResponseHelper.getResponse(
                     mapper(),
-                    ResponseHelper.statusCode.NOT_FOUND,
+                    ResponseHelper.StatusCode.NOT_FOUND,
                     "Not Found",
                     "Ue with " + dst + " was not found"
             );
@@ -218,7 +219,7 @@
         if (get(XranStore.class).getLink(cell.getEcgi(), ue.getId()) != null) {
             return ResponseHelper.getResponse(
                     mapper(),
-                    ResponseHelper.statusCode.BAD_REQUEST,
+                    ResponseHelper.StatusCode.BAD_REQUEST,
                     "Bad Request",
                     "Link already exists use PATCH to modify"
             );
@@ -243,7 +244,7 @@
 
             JsonNode rrmConf = jsonTree.path("RRMConf");
             if (!rrmConf.isMissingNode()) {
-                return handleRRMChange(link, rrmConf);
+                return handleRrmChange(link, rrmConf);
             }
 
         } catch (Exception e) {
@@ -253,7 +254,7 @@
 
             return ResponseHelper.getResponse(
                     mapper(),
-                    ResponseHelper.statusCode.INTERNAL_SERVER_ERROR,
+                    ResponseHelper.StatusCode.INTERNAL_SERVER_ERROR,
                     "Exception",
                     fullStackTrace
             );
@@ -261,22 +262,34 @@
 
         return ResponseHelper.getResponse(
                 mapper(),
-                ResponseHelper.statusCode.BAD_REQUEST,
+                ResponseHelper.StatusCode.BAD_REQUEST,
                 "Bad Request",
-                "The command you specified is not implemented or doesn't exist. We support " +
+                "The command you specified is not implemented " +
+                        "or doesn't exist. We support " +
                         "type/RRMConf/traficpercent commands."
         );
     }
 
-    private Response handleTypeChange(RnibLink link, RnibLink.Type newType) throws InterruptedException {
+
+    /**
+     * Change link based on type of the link.
+     *
+     * @param link    Link
+     * @param newType LinkType
+     * @return Response
+     * @throws InterruptedException Interrupted queue
+     */
+    private Response handleTypeChange(RnibLink link, RnibLink.Type newType)
+            throws InterruptedException {
         final SynchronousQueue<String>[] queue = new SynchronousQueue[1];
 
+
         if (newType.equals(RnibLink.Type.SERVING_PRIMARY)) {
             switch (link.getType()) {
                 case SERVING_PRIMARY: {
                     return ResponseHelper.getResponse(
                             mapper(),
-                            ResponseHelper.statusCode.BAD_REQUEST,
+                            ResponseHelper.StatusCode.BAD_REQUEST,
                             "Bad Request",
                             "Link is already a primary link"
                     );
@@ -284,26 +297,28 @@
                 case SERVING_SECONDARY_CA:
                 case SERVING_SECONDARY_DC:
                 case NON_SERVING: {
-                    List<RnibLink> linksByUeId = get(XranStore.class).getLinksByUeId(link.getLinkId().getUeId());
+                    List<RnibLink> linksByUeId = get(XranStore.class)
+                            .getlinksbyueid(link.getLinkId().getUeId());
 
                     Optional<RnibLink> primary = linksByUeId.stream()
                             .filter(l -> l.getType().equals(RnibLink.Type.SERVING_PRIMARY))
                             .findFirst();
                     if (primary.isPresent()) {
                         queue[0] = get(XranController.class).sendHORequest(link, primary.get());
-                        String poll = queue[0].poll(get(XranController.class).getNorthbound_timeout(), TimeUnit.MILLISECONDS);
+                        String poll = queue[0].poll(get(XranController.class)
+                                .getNorthboundTimeout(), TimeUnit.MILLISECONDS);
 
                         if (poll != null) {
                             return ResponseHelper.getResponse(
                                     mapper(),
-                                    ResponseHelper.statusCode.OK,
+                                    ResponseHelper.StatusCode.OK,
                                     "Handoff Response",
                                     poll
                             );
                         } else {
                             return ResponseHelper.getResponse(
                                     mapper(),
-                                    ResponseHelper.statusCode.REQUEST_TIMEOUT,
+                                    ResponseHelper.StatusCode.REQUEST_TIMEOUT,
                                     "Handoff Timeout",
                                     "eNodeB did not send a HOComplete/HOFailure on time"
                             );
@@ -312,93 +327,110 @@
                         link.setType(RnibLink.Type.SERVING_PRIMARY);
                         return ResponseHelper.getResponse(
                                 mapper(),
-                                ResponseHelper.statusCode.OK,
+                                ResponseHelper.StatusCode.OK,
                                 "OK",
                                 "Link set to primary"
                         );
                     }
                 }
+                default:
             }
         } else if (newType.equals(RnibLink.Type.NON_SERVING)) {
             switch (link.getType()) {
-                case NON_SERVING:
+                case NON_SERVING: {
                     return ResponseHelper.getResponse(
                             mapper(),
-                            ResponseHelper.statusCode.BAD_REQUEST,
+                            ResponseHelper.StatusCode.BAD_REQUEST,
                             "Bad Request",
                             "Link is already a primary link"
                     );
-                case SERVING_PRIMARY:
+                }
+                case SERVING_PRIMARY: {
                     return ResponseHelper.getResponse(
                             mapper(),
-                            ResponseHelper.statusCode.BAD_REQUEST,
+                            ResponseHelper.StatusCode.BAD_REQUEST,
                             "Bad Request",
                             "Cannot modify a primary link"
                     );
+                }
                 case SERVING_SECONDARY_CA:
-                case SERVING_SECONDARY_DC:
+                case SERVING_SECONDARY_DC: {
                     if (get(XranController.class).sendScellDelete(link)) {
                         return ResponseHelper.getResponse(
                                 mapper(),
-                                ResponseHelper.statusCode.OK,
+                                ResponseHelper.StatusCode.OK,
                                 "OK",
                                 "Link set to non-serving"
                         );
                     } else {
                         return ResponseHelper.getResponse(
                                 mapper(),
-                                ResponseHelper.statusCode.NOT_FOUND,
+                                ResponseHelper.StatusCode.NOT_FOUND,
                                 "Not Found",
                                 "Could not find cell config report to construct Scell Delete"
                         );
                     }
+                }
+                default:
             }
         } else if (newType.equals(RnibLink.Type.SERVING_SECONDARY_CA)) {
             switch (link.getType()) {
-                case SERVING_PRIMARY:
+                case SERVING_PRIMARY: {
                     return ResponseHelper.getResponse(
                             mapper(),
-                            ResponseHelper.statusCode.BAD_REQUEST,
+                            ResponseHelper.StatusCode.BAD_REQUEST,
                             "Bad Request",
                             "Cannot modify a primary link"
                     );
+                }
                 case SERVING_SECONDARY_DC:
-                case NON_SERVING:
+                case NON_SERVING: {
                     queue[0] = get(XranController.class).sendScellAdd(link);
-                    String poll = queue[0].poll(get(XranController.class).getNorthbound_timeout(), TimeUnit.MILLISECONDS);
+                    String poll = queue[0].poll(get(XranController.class)
+                            .getNorthboundTimeout(), TimeUnit.MILLISECONDS);
                     if (poll != null) {
                         return ResponseHelper.getResponse(
                                 mapper(),
-                                ResponseHelper.statusCode.OK,
+                                ResponseHelper.StatusCode.OK,
                                 "ScellAdd Response",
                                 poll
                         );
                     } else {
                         return ResponseHelper.getResponse(
                                 mapper(),
-                                ResponseHelper.statusCode.REQUEST_TIMEOUT,
+                                ResponseHelper.StatusCode.REQUEST_TIMEOUT,
                                 "ScellAdd Timeout",
                                 "eNodeB did not send a ScellAddStatus on time"
                         );
                     }
-                case SERVING_SECONDARY_CA:
+                }
+                case SERVING_SECONDARY_CA: {
                     return ResponseHelper.getResponse(
                             mapper(),
-                            ResponseHelper.statusCode.BAD_REQUEST,
+                            ResponseHelper.StatusCode.BAD_REQUEST,
                             "Bad Request",
                             "Link is already a secondary CA link"
                     );
+                }
+                default:
             }
         }
 
         return ResponseHelper.getResponse(
                 mapper(),
-                ResponseHelper.statusCode.BAD_REQUEST,
+                ResponseHelper.StatusCode.BAD_REQUEST,
                 "Bad Request",
                 "The command you specified is not implemented or doesn't exist."
         );
     }
 
+    /**
+     * Modify link based on the traffic percent.
+     *
+     * @param link           Link
+     * @param trafficpercent Traffic Percent of the link to be modified
+     * @return Response
+     */
     private Response handleTrafficChange(RnibLink link, JsonNode trafficpercent) {
         JsonNode jsonNode = trafficpercent.path("traffic-percent-dl");
         if (!jsonNode.isMissingNode()) {
@@ -412,41 +444,49 @@
 
         return ResponseHelper.getResponse(
                 mapper(),
-                ResponseHelper.statusCode.OK,
+                ResponseHelper.StatusCode.OK,
                 "OK",
                 "Traffic Percent changed"
         );
     }
 
-    private Response handleRRMChange(RnibLink link, JsonNode rrmConf) throws InterruptedException {
+    /**
+     * Modify link based on RRMConf parameters.
+     *
+     * @param link    Link
+     * @param rrmConf RRMConfig of the Link to be modified
+     * @return Response
+     * @throws InterruptedException Interrupted queue
+     */
+    private Response handleRrmChange(RnibLink link, JsonNode rrmConf) throws InterruptedException {
         final SynchronousQueue<String>[] queue = new SynchronousQueue[1];
-        get(XranStore.class).modifyLinkRrmConf(link, rrmConf);
-        boolean isxICIC = link.getLinkId().getCell().getVersion() <= 3;
+        get(XranStore.class).modifylinkrrmconf(link, rrmConf);
+        boolean isxicic = link.getLinkId().getCell().getVersion() <= 3;
 
-        queue[0] = get(XranController.class).sendModifiedRRMConf(link.getRrmParameters(),
-                isxICIC);
+        queue[0] = get(XranController.class).sendmodifiedrrmconf(link.getRrmParameters(),
+                isxicic);
 
-        if (isxICIC) {
+        if (isxicic) {
             return ResponseHelper.getResponse(
                     mapper(),
-                    ResponseHelper.statusCode.OK,
+                    ResponseHelper.StatusCode.OK,
                     "OK",
                     "xICIC was sent successfully"
             );
         } else {
-            String poll = queue[0].poll(get(XranController.class).getNorthbound_timeout(), TimeUnit.MILLISECONDS);
+            String poll = queue[0].poll(get(XranController.class).getNorthboundTimeout(), TimeUnit.MILLISECONDS);
 
             if (poll != null) {
                 return ResponseHelper.getResponse(
                         mapper(),
-                        ResponseHelper.statusCode.OK,
+                        ResponseHelper.StatusCode.OK,
                         "RRMConfig Response",
                         poll
                 );
             } else {
                 return ResponseHelper.getResponse(
                         mapper(),
-                        ResponseHelper.statusCode.REQUEST_TIMEOUT,
+                        ResponseHelper.StatusCode.REQUEST_TIMEOUT,
                         "RRMConfig Timeout",
                         "eNodeB did not send a RRMConfingStatus on time"
                 );
diff --git a/src/main/java/org.onosproject.xran/rest/NodeWebResource.java b/src/main/java/org.onosproject.xran/rest/NodeWebResource.java
index 2b9124c..961ed19 100644
--- a/src/main/java/org.onosproject.xran/rest/NodeWebResource.java
+++ b/src/main/java/org.onosproject.xran/rest/NodeWebResource.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-present Open Networking Laboratory
+ * Copyright 2016-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,24 +15,20 @@
  */
 package org.onosproject.xran.rest;
 
-import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.JsonNode;
-import com.google.common.collect.Lists;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.exception.ExceptionUtils;
 import org.onosproject.rest.AbstractWebResource;
 import org.onosproject.xran.XranStore;
-import org.onosproject.xran.entities.RnibCell;
-import org.onosproject.xran.entities.RnibUe;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.ws.rs.DefaultValue;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
+import javax.ws.rs.QueryParam;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import java.util.List;
@@ -51,10 +47,10 @@
     }
 
     /**
-     * test.
+     * List all the nodes in the R-NIB.
      *
-     * @param type test
-     * @return test
+     * @param type Type of node (cell/ue)
+     * @return Response
      */
     @GET
     @Produces(MediaType.APPLICATION_JSON)
@@ -62,16 +58,17 @@
         JsonNode jsonNode;
         try {
             List<Object> nodes;
+            // List cell type of nodes or UE type of nodes.
             if (StringUtils.isBlank(type)) {
                 nodes = get(XranStore.class).getNodes();
             } else if (type.equals("cell")) {
-                nodes = get(XranStore.class).getCellNodes();
+                nodes = get(XranStore.class).getcellnodes();
             } else if (type.equals("ue")) {
-                nodes = get(XranStore.class).getUeNodes();
+                nodes = get(XranStore.class).getuenodes();
             } else {
                 return ResponseHelper.getResponse(
                         mapper(),
-                        ResponseHelper.statusCode.NOT_FOUND,
+                        ResponseHelper.StatusCode.NOT_FOUND,
                         "Not Found",
                         "Type of node was not found"
                 );
@@ -80,7 +77,7 @@
             if (nodes.size() == 0) {
                 return ResponseHelper.getResponse(
                         mapper(),
-                        ResponseHelper.statusCode.NOT_FOUND,
+                        ResponseHelper.StatusCode.NOT_FOUND,
                         "Not Found",
                         "No nodes found"
                 );
@@ -94,7 +91,7 @@
 
             return ResponseHelper.getResponse(
                     mapper(),
-                    ResponseHelper.statusCode.INTERNAL_SERVER_ERROR,
+                    ResponseHelper.StatusCode.INTERNAL_SERVER_ERROR,
                     "Exception",
                     fullStackTrace
             );
@@ -102,22 +99,22 @@
 
         return ResponseHelper.getResponse(
                 mapper(),
-                ResponseHelper.statusCode.OK,
+                ResponseHelper.StatusCode.OK,
                 jsonNode
         );
     }
 
     /**
-     * test.
+     * List the node with a specific node id.
      *
-     * @param nodeid test
-     * @return test
+     * @param nodeid ID of the node
+     * @return Response
      */
     @GET
     @Path("{nodeid}")
     @Produces(MediaType.APPLICATION_JSON)
     public Response getNodeid(@PathParam("nodeid") String nodeid) {
-        Object node = get(XranStore.class).getByNodeId(nodeid);
+        Object node = get(XranStore.class).getbynodeid(nodeid);
 
         if (node != null) {
             try {
@@ -125,7 +122,7 @@
 
                 return ResponseHelper.getResponse(
                         mapper(),
-                        ResponseHelper.statusCode.OK,
+                        ResponseHelper.StatusCode.OK,
                         jsonNode
                 );
             } catch (Exception e) {
@@ -135,7 +132,7 @@
 
                 return ResponseHelper.getResponse(
                         mapper(),
-                        ResponseHelper.statusCode.INTERNAL_SERVER_ERROR,
+                        ResponseHelper.StatusCode.INTERNAL_SERVER_ERROR,
                         "Exception",
                         fullStackTrace
                 );
@@ -144,7 +141,7 @@
 
         return ResponseHelper.getResponse(
                 mapper(),
-                ResponseHelper.statusCode.NOT_FOUND,
+                ResponseHelper.StatusCode.NOT_FOUND,
                 "Not Found",
                 "Node " + nodeid + " was not found"
         );
diff --git a/src/main/java/org.onosproject.xran/rest/ResponseHelper.java b/src/main/java/org.onosproject.xran/rest/ResponseHelper.java
index 5e2f1dd..f037cee 100644
--- a/src/main/java/org.onosproject.xran/rest/ResponseHelper.java
+++ b/src/main/java/org.onosproject.xran/rest/ResponseHelper.java
@@ -23,9 +23,15 @@
 
 import javax.ws.rs.core.Response;
 
-public class ResponseHelper {
+/**
+ * Various types of responses.
+ */
+public final class ResponseHelper {
 
-    public static Response getResponse(ObjectMapper mapper, statusCode status, String title, String detail) {
+    private ResponseHelper() {
+    }
+
+    public static Response getResponse(ObjectMapper mapper, StatusCode status, String title, String detail) {
         ObjectNode rootNode = mapper.createObjectNode();
 
         switch (status) {
@@ -58,7 +64,7 @@
         }
     }
 
-    public static Response getResponse(ObjectMapper mapper, statusCode status, JsonNode node) {
+    public static Response getResponse(ObjectMapper mapper, StatusCode status, JsonNode node) {
         ObjectNode rootNode = mapper.createObjectNode();
 
         switch (status) {
@@ -79,7 +85,7 @@
         }
     }
 
-    public enum statusCode {
+    public enum StatusCode {
         OK(200),
         BAD_REQUEST(400),
         NOT_FOUND(404),
@@ -89,7 +95,7 @@
 
         public int status;
 
-        statusCode(int status) {
+        StatusCode(int status) {
             this.status = status;
         }
     }
diff --git a/src/main/java/org.onosproject.xran/rest/SliceWebResource.java b/src/main/java/org.onosproject.xran/rest/SliceWebResource.java
index 58b4bef..8817be8 100644
--- a/src/main/java/org.onosproject.xran/rest/SliceWebResource.java
+++ b/src/main/java/org.onosproject.xran/rest/SliceWebResource.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-present Open Networking Laboratory
+ * Copyright 2016-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,7 +15,6 @@
  */
 package org.onosproject.xran.rest;
 
-import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.JsonNode;
 import org.apache.commons.lang.exception.ExceptionUtils;
 import org.onosproject.rest.AbstractWebResource;
@@ -32,7 +31,6 @@
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
-import java.io.IOException;
 import java.io.InputStream;
 
 /**
@@ -49,10 +47,10 @@
     }
 
     /**
-     * test.
+     * List the slice with the given slice ID.
      *
-     * @param sliceid test
-     * @return test
+     * @param sliceid ID of the slice
+     * @return Response
      */
     @GET
     @Path("{sliceid}")
@@ -66,7 +64,7 @@
 
                 return ResponseHelper.getResponse(
                         mapper(),
-                        ResponseHelper.statusCode.OK,
+                        ResponseHelper.StatusCode.OK,
                         jsonNode
                 );
             } catch (Exception e) {
@@ -76,7 +74,7 @@
 
                 return ResponseHelper.getResponse(
                         mapper(),
-                        ResponseHelper.statusCode.INTERNAL_SERVER_ERROR,
+                        ResponseHelper.StatusCode.INTERNAL_SERVER_ERROR,
                         "Exception",
                         fullStackTrace
                 );
@@ -85,17 +83,17 @@
 
         return ResponseHelper.getResponse(
                 mapper(),
-                ResponseHelper.statusCode.NOT_FOUND,
+                ResponseHelper.StatusCode.NOT_FOUND,
                 "Not Found",
                 "Slice " + sliceid + " not found"
         );
     }
 
     /**
-     * test.
+     * Create slice with the corresponding attributes.
      *
-     * @param stream test
-     * @return test
+     * @param stream Attributes to create slice
+     * @return Response
      */
     @POST
     @Consumes(MediaType.APPLICATION_JSON)
@@ -108,7 +106,7 @@
             // FIXME: change when implemented
             return ResponseHelper.getResponse(
                     mapper(),
-                    ResponseHelper.statusCode.NOT_IMPLEMENTED,
+                    ResponseHelper.StatusCode.NOT_IMPLEMENTED,
                     "Not Implemented",
                     "POST Slice not implemented"
             );
@@ -119,7 +117,7 @@
 
             return ResponseHelper.getResponse(
                     mapper(),
-                    ResponseHelper.statusCode.INTERNAL_SERVER_ERROR,
+                    ResponseHelper.StatusCode.INTERNAL_SERVER_ERROR,
                     "Exception",
                     fullStackTrace
             );
diff --git a/src/main/java/org.onosproject.xran/rest/XranWebApplication.java b/src/main/java/org.onosproject.xran/rest/XranWebApplication.java
index 30f584b..fff752f 100644
--- a/src/main/java/org.onosproject.xran/rest/XranWebApplication.java
+++ b/src/main/java/org.onosproject.xran/rest/XranWebApplication.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-present Open Networking Laboratory
+ * Copyright 2016-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/main/java/org.onosproject.xran/rest/package-info.java b/src/main/java/org.onosproject.xran/rest/package-info.java
index 16f0c2f..c08814c 100644
--- a/src/main/java/org.onosproject.xran/rest/package-info.java
+++ b/src/main/java/org.onosproject.xran/rest/package-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-present Open Networking Laboratory
+ * Copyright 2016-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/src/main/java/org.onosproject.xran/wrapper/CellMap.java b/src/main/java/org.onosproject.xran/wrapper/CellMap.java
index ea4fc77..6685189 100644
--- a/src/main/java/org.onosproject.xran/wrapper/CellMap.java
+++ b/src/main/java/org.onosproject.xran/wrapper/CellMap.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,20 +19,22 @@
 import com.google.common.collect.BiMap;
 import com.google.common.collect.HashBiMap;
 import io.netty.channel.ChannelHandlerContext;
-import org.onosproject.net.DeviceId;
 import org.onosproject.xran.XranStore;
 import org.onosproject.xran.codecs.api.ECGI;
 import org.onosproject.xran.codecs.api.PCIARFCN;
 import org.onosproject.xran.entities.RnibCell;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
+/**
+ * CELL wrapper to help put/get/remove.
+ */
 public class CellMap {
+    // map to get the context channel based on ecgi
     private ConcurrentMap<ECGI, ChannelHandlerContext> ecgiCtx = new ConcurrentHashMap<>();
 
+    // pci-arfcn to ecgi bimap
     private BiMap<PCIARFCN, ECGI> pciarfcnMap = HashBiMap.create();
     private XranStore xranStore;
 
@@ -40,13 +42,22 @@
         this.xranStore = xranStore;
     }
 
+    /**
+     * Put the PCI-ARFCN to ECGI map from new cell.
+     *
+     * @param value CELL entity
+     */
     public void putPciArfcn(RnibCell value) {
-        PCIARFCN pciarfcn = new PCIARFCN();
-        pciarfcn.setPci(value.getConf().getPci());
-        pciarfcn.setEarfcnDl(value.getConf().getEarfcnDl());
+        PCIARFCN pciarfcn = PCIARFCN.valueOf(value.getConf().getPci(), value.getConf().getEarfcnDl());
         pciarfcnMap.put(pciarfcn, value.getEcgi());
     }
 
+    /**
+     * Put inside ECGI to CTX map.
+     *
+     * @param value CELL entity to get ECGI from
+     * @param ctx   context channel
+     */
     public void put(RnibCell value, ChannelHandlerContext ctx) {
         if (value.getEcgi() != null) {
             ecgiCtx.put(value.getEcgi(), ctx);
@@ -54,8 +65,14 @@
         }
     }
 
+    /**
+     * Get cell based on PCI-ARFCN.
+     *
+     * @param id PCI-ARFCN
+     * @return CELL entity if found
+     */
     public RnibCell get(PCIARFCN id) {
-        ECGI ecgi = null;
+        ECGI ecgi;
         ecgi = pciarfcnMap.get(id);
 
         if (ecgi != null) {
@@ -64,6 +81,12 @@
         return null;
     }
 
+    /**
+     * Get cell based on ECGI.
+     *
+     * @param ecgi CELL ECGI
+     * @return CELL entity if found
+     */
     public RnibCell get(ECGI ecgi) {
         if (ecgi != null) {
             return xranStore.getCell(ecgi);
@@ -71,6 +94,12 @@
         return null;
     }
 
+    /**
+     * Remove cell from three maps based on ECGI or PCI-ARFCN.
+     *
+     * @param key ecgECGIi or pci-arfcn of cell to remove
+     * @return true if remove succeeded
+     */
     public boolean remove(Object key) {
         ECGI ecgi = null;
         if (key instanceof ECGI) {
@@ -87,6 +116,12 @@
         return ecgi != null && xranStore.removeCell(ecgi);
     }
 
+    /**
+     * Get context handler for specified ECGI.
+     *
+     * @param id CELL ECGI
+     * @return context handler if found
+     */
     public ChannelHandlerContext getCtx(ECGI id) {
         return ecgiCtx.get(id);
     }
diff --git a/src/main/java/org.onosproject.xran/wrapper/LinkMap.java b/src/main/java/org.onosproject.xran/wrapper/LinkMap.java
index ed7b4f1..543879d 100644
--- a/src/main/java/org.onosproject.xran/wrapper/LinkMap.java
+++ b/src/main/java/org.onosproject.xran/wrapper/LinkMap.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -29,6 +29,9 @@
 
 import static org.slf4j.LoggerFactory.getLogger;
 
+/**
+ * LINK wrapper to help put/get/remove.
+ */
 public class LinkMap {
     private static final Logger log = getLogger(LinkMap.class);
 
@@ -41,14 +44,28 @@
         this.ueMap = ueMap;
     }
 
+    /**
+     * Put a new primary link between a CELL and a UE.
+     *
+     * @param cell CELL entity
+     * @param ue   UE entity
+     */
     public void putPrimaryLink(RnibCell cell, RnibUe ue) {
         RnibLink link = new RnibLink(cell, ue);
+        // set link to primary before storing
         link.setType(RnibLink.Type.SERVING_PRIMARY);
         xranStore.storeLink(link);
 
         ueMap.putCrnti(cell, ue);
     }
 
+    /**
+     * Put non-serving link based on CELL and CRNTI.
+     *
+     * @param cell  CELL entity
+     * @param crnti CRNTI
+     * @return new link after creation
+     */
     public RnibLink putNonServingLink(RnibCell cell, CRNTI crnti) {
         RnibLink link = null;
         RnibUe ue = ueMap.get(cell.getEcgi(), crnti);
@@ -62,6 +79,13 @@
         return link;
     }
 
+    /**
+     * Put non-serving link based on CELL and UE id.
+     *
+     * @param cell CELL entity
+     * @param ueId UE id
+     * @return new link after creation
+     */
     public RnibLink putNonServingLink(RnibCell cell, Long ueId) {
         RnibLink link = null;
         RnibUe ue = ueMap.get(ueId);
@@ -75,6 +99,13 @@
         return link;
     }
 
+    /**
+     * Get link based on ECGI and UE id.
+     *
+     * @param src CELL ECGI
+     * @param dst UE ID
+     * @return link if found
+     */
     public RnibLink get(ECGI src, Long dst) {
         if (src != null && dst != null) {
             return xranStore.getLink(src, dst);
@@ -82,6 +113,13 @@
         return null;
     }
 
+    /**
+     * Get link based on ECGI and CRNTI.
+     *
+     * @param src CELL ECGI
+     * @param dst CELL unique CRNTI
+     * @return link if found
+     */
     public RnibLink get(ECGI src, CRNTI dst) {
         RnibUe ue = ueMap.get(src, dst);
 
@@ -91,12 +129,27 @@
         return null;
     }
 
+    /**
+     * Get CRNTI based on UE id.
+     *
+     * @param ueId UE id
+     * @return UE if found
+     */
     public CRNTI getCrnti(Long ueId) {
         return ueMap.getCrntUe().inverse().get(ueId).getValue();
     }
 
+    /**
+     * Get primary CELL for specified UE.
+     *
+     * @param ue UE entity
+     * @return primary CELL if found
+     */
     public RnibCell getPrimaryCell(RnibUe ue) {
-        List<RnibLink> linksByUeId = xranStore.getLinksByUeId(ue.getId());
+        List<RnibLink> linksByUeId = xranStore.getlinksbyueid(ue.getId());
+
+        // TODO: search for primary link from crntUe in UeMap because it has the primary links only!
+        // search all links for this UE and find PRIMARY.
         Optional<RnibLink> primary = linksByUeId.stream()
                 .filter(l -> l.getType().equals(RnibLink.Type.SERVING_PRIMARY))
                 .findFirst();
diff --git a/src/main/java/org.onosproject.xran/wrapper/UeMap.java b/src/main/java/org.onosproject.xran/wrapper/UeMap.java
index 8b2110d..6ebab70 100644
--- a/src/main/java/org.onosproject.xran/wrapper/UeMap.java
+++ b/src/main/java/org.onosproject.xran/wrapper/UeMap.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,12 +21,15 @@
 import org.onosproject.xran.XranStore;
 import org.onosproject.xran.codecs.api.CRNTI;
 import org.onosproject.xran.codecs.api.ECGI;
-import org.onosproject.xran.codecs.api.MMEUES1APID;
 import org.onosproject.xran.entities.RnibCell;
 import org.onosproject.xran.entities.RnibUe;
 import org.onosproject.xran.identifiers.EcgiCrntiPair;
 
+/**
+ * UE wrapper to help put/get/remove.
+ */
 public class UeMap {
+    // ECGI, CRNTI pair of primary cell for specified UE.
     private BiMap<EcgiCrntiPair, Long> crntUe = HashBiMap.create();
 
     private XranStore xranStore;
@@ -35,30 +38,58 @@
         this.xranStore = xranStore;
     }
 
+    /**
+     * Get the ECGI, CRNTI to UE bimap.
+     *
+     * @return BiMap of EcgiCrntiPair to Long
+     */
     public BiMap<EcgiCrntiPair, Long> getCrntUe() {
         return crntUe;
     }
 
+    /**
+     * Put new ECGI, CRNTI pair of primary link to UE and remove old one.
+     *
+     * @param cell new primary CELL
+     * @param ue   UE
+     */
     public void putCrnti(RnibCell cell, RnibUe ue) {
-        CRNTI ranId = ue.getCrnti();
+        CRNTI crnti = ue.getCrnti();
         ECGI ecgi = cell.getEcgi();
-        if (ranId != null && ecgi != null) {
+
+        if (crnti != null && ecgi != null) {
+            // check if there is an ecgi, crnti pair for this UE id.
             EcgiCrntiPair oldPair = crntUe.inverse().get(ue.getId()),
                     newPair = EcgiCrntiPair.valueOf(cell.getEcgi(), ue.getCrnti());
             if (oldPair == null) {
                 crntUe.put(newPair, ue.getId());
             } else {
+                // remove old pair and add the new pair which corresponds to the primary cell.
                 crntUe.inverse().remove(ue.getId());
                 crntUe.put(newPair, ue.getId());
             }
         }
     }
 
+    /**
+     * Put new UE to the store and update the ECGI, CRNTI pair.
+     *
+     * @param cell new primary CELL
+     * @param ue   UE
+     */
     public void put(RnibCell cell, RnibUe ue) {
         xranStore.storeUe(ue);
+        // after adding new primary cell update the bimap as well.
         putCrnti(cell, ue);
     }
 
+    /**
+     * Get UE based on ECGI and CRNTI.
+     *
+     * @param ecgi  CELL ECGI
+     * @param crnti CELL unique CRNTI
+     * @return UE entity if found
+     */
     public RnibUe get(ECGI ecgi, CRNTI crnti) {
         Long aLong = crntUe.get(EcgiCrntiPair.valueOf(ecgi, crnti));
         if (aLong != null) {
@@ -67,10 +98,22 @@
         return null;
     }
 
+    /**
+     * Get UE based on its id.
+     *
+     * @param ueId UE id
+     * @return UE entity if found
+     */
     public RnibUe get(Long ueId) {
         return xranStore.getUe(ueId);
     }
 
+    /**
+     * Remove UE based on its id.
+     *
+     * @param ueId UE id
+     * @return true if remove succeeded
+     */
     public boolean remove(Long ueId) {
         crntUe.inverse().remove(ueId);
         return xranStore.removeUe(ueId);
diff --git a/src/main/java/org.onosproject.xran/wrapper/package-info.java b/src/main/java/org.onosproject.xran/wrapper/package-info.java
index c724c32..7718d8e 100644
--- a/src/main/java/org.onosproject.xran/wrapper/package-info.java
+++ b/src/main/java/org.onosproject.xran/wrapper/package-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-present Open Networking Laboratory
+ * Copyright 2015-present Open Networking Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,4 +14,7 @@
  * limitations under the License.
  */
 
+/**
+ * Created by dimitris on 7/20/17.
+ */
 package org.onosproject.xran.wrapper;
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
index f0919ca..4520f46 100644
--- a/src/main/webapp/WEB-INF/web.xml
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2016-present Open Networking Laboratory
+  ~ Copyright 2016-present Open Networking Foundation
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
diff --git a/xran-cfg.json b/xran-cfg.json
index 03fa720..099ad19 100644
--- a/xran-cfg.json
+++ b/xran-cfg.json
@@ -26,7 +26,7 @@
         "admission_success": true,
         "bearer_success": true,
         "no_meas_link_removal_ms": 10000,
-        "idle_ue_removal_ms": 10000,
+        "idle_ue_removal_ms": 1,
         "nb_response_timeout_ms": 10000
       }
     }