[ONOS-5003][ONOS-5004][ONOS-5005]Generated Code modification for YangUtils+added interface for augmentation method and other api changes.

Change-Id: I954b9c99e182f21d01fcc5cd76fbac7d61a6c3aa
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugment.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugment.java
index 64c13ed..13e43ac 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugment.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugment.java
@@ -83,7 +83,7 @@
 public class YangAugment
         extends YangNode
         implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector, YangAugmentedInfo, Resolvable,
-        YangXPathResolver, YangWhenHolder, YangIfFeatureHolder {
+        YangXPathResolver, YangWhenHolder, YangIfFeatureHolder, YangTranslatorOperatorNode {
 
     private static final long serialVersionUID = 806201602L;
 
@@ -254,7 +254,7 @@
     @Override
     public void addLeaf(YangLeaf leaf) {
         if (getListOfLeaf() == null) {
-            setListOfLeaf(new LinkedList<YangLeaf>());
+            setListOfLeaf(new LinkedList<>());
         }
 
         getListOfLeaf().add(leaf);
@@ -288,7 +288,7 @@
     @Override
     public void addLeafList(YangLeafList leafList) {
         if (getListOfLeafList() == null) {
-            setListOfLeafList(new LinkedList<YangLeafList>());
+            setListOfLeafList(new LinkedList<>());
         }
 
         getListOfLeafList().add(leafList);
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java
index 6677a8c..e1e037a 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java
@@ -96,7 +96,7 @@
 public class YangCase
         extends YangNode
         implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector, YangAugmentableNode,
-        YangWhenHolder, YangIfFeatureHolder {
+        YangWhenHolder, YangIfFeatureHolder, YangIsFilterContentNodes {
 
     private static final long serialVersionUID = 806201603L;
 
@@ -149,6 +149,8 @@
      */
     public YangCase() {
         super(YangNodeType.CASE_NODE);
+        listOfLeaf = new LinkedList<>();
+        listOfLeafList = new LinkedList<>();
     }
 
     /**
@@ -239,7 +241,7 @@
     @Override
     public void addLeaf(YangLeaf leaf) {
         if (getListOfLeaf() == null) {
-            setListOfLeaf(new LinkedList<YangLeaf>());
+            setListOfLeaf(new LinkedList<>());
         }
 
         getListOfLeaf().add(leaf);
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java
index bc3c72e..ddace18 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java
@@ -91,7 +91,7 @@
 public class YangContainer
         extends YangNode
         implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector,
-        YangAugmentableNode, YangMustHolder, YangWhenHolder, YangIfFeatureHolder {
+        YangAugmentableNode, YangMustHolder, YangWhenHolder, YangIfFeatureHolder, YangIsFilterContentNodes {
 
     private static final long serialVersionUID = 806201605L;
 
@@ -158,6 +158,8 @@
      */
     public YangContainer() {
         super(YangNodeType.CONTAINER_NODE);
+        listOfLeaf = new LinkedList<>();
+        listOfLeafList = new LinkedList<>();
     }
 
     /**
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
index 25e11b6..272a6e2 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
@@ -71,7 +71,7 @@
  */
 public class YangInput
         extends YangNode
-        implements YangLeavesHolder, Parsable, CollisionDetector, YangAugmentableNode {
+        implements YangLeavesHolder, Parsable, CollisionDetector, YangAugmentableNode, YangIsFilterContentNodes {
 
     private static final long serialVersionUID = 806201608L;
 
@@ -97,8 +97,8 @@
      */
     public YangInput() {
         super(YangNodeType.INPUT_NODE);
-        listOfLeaf = new LinkedList<YangLeaf>();
-        listOfLeafList = new LinkedList<YangLeafList>();
+        listOfLeaf = new LinkedList<>();
+        listOfLeafList = new LinkedList<>();
     }
 
     @Override
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangIsFilterContentNodes.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangIsFilterContentNodes.java
new file mode 100644
index 0000000..196305c
--- /dev/null
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangIsFilterContentNodes.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.yangutils.datamodel;
+
+/**
+ * Represent the YANG nodes which can contain is filter content match.
+ */
+public interface YangIsFilterContentNodes {
+}
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java
index b86911a..e2bd8b5 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java
@@ -19,6 +19,7 @@
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
+
 import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
 import org.onosproject.yangutils.datamodel.utils.Parsable;
 import org.onosproject.yangutils.datamodel.utils.YangConstructType;
@@ -71,7 +72,8 @@
 public class YangList
         extends YangNode
         implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector,
-        YangAugmentableNode, YangMustHolder, YangWhenHolder, YangIfFeatureHolder, YangDataNode {
+        YangAugmentableNode, YangMustHolder, YangWhenHolder, YangIfFeatureHolder, YangDataNode,
+        YangIsFilterContentNodes {
 
     private static final long serialVersionUID = 806201609L;
 
@@ -92,7 +94,7 @@
 
     /**
      * Reference RFC 6020.
-     *
+     * <p>
      * The "key" statement, which MUST be present if the list represents
      * configuration, and MAY be present otherwise, takes as an argument a
      * string that specifies a space-separated list of leaf identifiers of this
@@ -100,39 +102,39 @@
      * such leaf identifier MUST refer to a child leaf of the list. The leafs
      * can be defined directly in sub-statements to the list, or in groupings
      * used in the list.
-     *
+     * <p>
      * The combined values of all the leafs specified in the key are used to
      * uniquely identify a list entry. All key leafs MUST be given values when a
      * list entry is created. Thus, any default values in the key leafs or their
      * types are ignored. It also implies that any mandatory statement in the
      * key leafs are ignored.
-     *
+     * <p>
      * A leaf that is part of the key can be of any built-in or derived type,
      * except it MUST NOT be the built-in type "empty".
-     *
+     * <p>
      * All key leafs in a list MUST have the same value for their "config" as
      * the list itself.
-     *
+     * <p>
      * List of key leaf names.
      */
     private List<String> keyList;
 
     /**
      * Reference RFC 6020.
-     *
+     * <p>
      * The "unique" statement is used to put constraints on valid list
      * entries.  It takes as an argument a string that contains a space-
      * separated list of schema node identifiers, which MUST be given in the
      * descendant form.  Each such schema node identifier MUST refer to a leaf.
-     *
+     * <p>
      * If one of the referenced leafs represents configuration data, then
      * all of the referenced leafs MUST represent configuration data.
-     *
+     * <p>
      * The "unique" constraint specifies that the combined values of all the
      * leaf instances specified in the argument string, including leafs with
      * default values, MUST be unique within all list entry instances in
      * which all referenced leafs exist.
-     *
+     * <p>
      * List of unique leaf/leaf-list names
      */
     private List<String> uniqueList;
@@ -151,32 +153,32 @@
 
     /**
      * Reference RFC 6020.
-     *
+     * <p>
      * The "max-elements" statement, which is optional, takes as an argument a
      * positive integer or the string "unbounded", which puts a constraint on
      * valid list entries. A valid leaf-list or list always has at most
      * max-elements entries.
-     *
+     * <p>
      * If no "max-elements" statement is present, it defaults to "unbounded".
      */
     private YangMaxElement maxElements;
 
     /**
      * Reference RFC 6020.
-     *
+     * <p>
      * The "min-elements" statement, which is optional, takes as an argument a
      * non-negative integer that puts a constraint on valid list entries. A
      * valid leaf-list or list MUST have at least min-elements entries.
-     *
+     * <p>
      * If no "min-elements" statement is present, it defaults to zero.
-     *
+     * <p>
      * The behavior of the constraint depends on the type of the leaf-list's or
      * list's closest ancestor node in the schema tree that is not a non-
      * presence container:
-     *
+     * <p>
      * o If this ancestor is a case node, the constraint is enforced if any
      * other node from the case exists.
-     *
+     * <p>
      * o Otherwise, it is enforced if the ancestor node exists.
      */
     private YangMinElement minElements;
@@ -211,6 +213,8 @@
      */
     public YangList() {
         super(YangNodeType.LIST_NODE);
+        listOfLeaf = new LinkedList<>();
+        listOfLeafList = new LinkedList<>();
     }
 
     /**
@@ -624,8 +628,8 @@
     /**
      * Validates key statement of list.
      *
-     * @param leaves    list of leaf attributes of list
-     * @param keys      list of key attributes of list
+     * @param leaves list of leaf attributes of list
+     * @param keys   list of key attributes of list
      * @throws DataModelException a violation of data model rules
      */
     private void validateKey(List<YangLeaf> leaves, List<String> keys)
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangModule.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangModule.java
index 8e5de36..c2df52f 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangModule.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangModule.java
@@ -74,7 +74,7 @@
 public class YangModule
         extends YangNode
         implements YangLeavesHolder, YangDesc, YangReference, Parsable, CollisionDetector, YangReferenceResolver,
-        RpcNotificationContainer, YangFeatureHolder {
+        RpcNotificationContainer, YangFeatureHolder, YangIsFilterContentNodes {
 
     private static final long serialVersionUID = 806201610L;
 
@@ -85,7 +85,7 @@
 
     /**
      * Reference:RFC 6020.
-     *
+     * <p>
      * The "contact" statement provides contact information for the module. The
      * argument is a string that is used to specify contact information for the
      * person or persons to whom technical queries concerning this module should
@@ -96,7 +96,7 @@
 
     /**
      * Reference:RFC 6020.
-     *
+     * <p>
      * The "description" statement takes as an argument a string that contains a
      * human-readable textual description of this definition. The text is
      * provided in a language (or languages) chosen by the module developer; for
@@ -136,7 +136,7 @@
 
     /**
      * Reference:RFC 6020.
-     *
+     * <p>
      * The "organization" statement defines the party responsible for this
      * module. The argument is a string that is used to specify a textual
      * description of the organization(s) under whose auspices this module was
@@ -211,9 +211,9 @@
     private List<YangResolutionInfo> ifFeatureResolutionList;
 
     /**
-     * Leafref resolution list.
+     * LeafRef resolution list.
      */
-    private List<YangResolutionInfo> leafrefResolutionList;
+    private List<YangResolutionInfo> leafRefResolutionList;
 
     /**
      * Base resolution list.
@@ -221,9 +221,9 @@
     private List<YangResolutionInfo> baseResolutionList;
 
     /**
-     * Identityref resolution list.
+     * IdentityRef resolution list.
      */
-    private List<YangResolutionInfo> identityrefResolutionList;
+    private List<YangResolutionInfo> identityRefResolutionList;
 
     /**
      * Augment resolution list.
@@ -250,15 +250,15 @@
         augmentResolutionList = new LinkedList<>();
         usesResolutionList = new LinkedList<>();
         ifFeatureResolutionList = new LinkedList<>();
-        leafrefResolutionList = new LinkedList<>();
+        leafRefResolutionList = new LinkedList<>();
         baseResolutionList = new LinkedList<>();
-        identityrefResolutionList = new LinkedList<>();
+        identityRefResolutionList = new LinkedList<>();
         compilerAnnotationList = new LinkedList<>();
-        importList = new LinkedList<YangImport>();
-        includeList = new LinkedList<YangInclude>();
-        listOfLeaf = new LinkedList<YangLeaf>();
-        listOfLeafList = new LinkedList<YangLeafList>();
-        extensionList = new LinkedList<YangExtension>();
+        importList = new LinkedList<>();
+        includeList = new LinkedList<>();
+        listOfLeaf = new LinkedList<>();
+        listOfLeafList = new LinkedList<>();
+        extensionList = new LinkedList<>();
     }
 
     /**
@@ -684,11 +684,11 @@
         } else if (type == ResolvableType.YANG_IF_FEATURE) {
             return ifFeatureResolutionList;
         } else if (type == ResolvableType.YANG_LEAFREF) {
-            return leafrefResolutionList;
+            return leafRefResolutionList;
         } else if (type == ResolvableType.YANG_BASE) {
             return baseResolutionList;
         } else {
-            return identityrefResolutionList;
+            return identityRefResolutionList;
         }
     }
 
@@ -702,13 +702,13 @@
         } else if (type == ResolvableType.YANG_IF_FEATURE) {
             ifFeatureResolutionList.add(resolutionInfo);
         } else if (type == ResolvableType.YANG_LEAFREF) {
-            leafrefResolutionList.add(resolutionInfo);
+            leafRefResolutionList.add(resolutionInfo);
         } else if (type == ResolvableType.YANG_BASE) {
             baseResolutionList.add(resolutionInfo);
         } else if (type == ResolvableType.YANG_AUGMENT) {
             augmentResolutionList.add(resolutionInfo);
         } else if (type == ResolvableType.YANG_IDENTITYREF) {
-            identityrefResolutionList.add(resolutionInfo);
+            identityRefResolutionList.add(resolutionInfo);
         }
     }
 
@@ -722,13 +722,13 @@
         } else if (type == ResolvableType.YANG_IF_FEATURE) {
             ifFeatureResolutionList.add((YangResolutionInfo) resolutionList);
         } else if (type == ResolvableType.YANG_LEAFREF) {
-            leafrefResolutionList = resolutionList;
+            leafRefResolutionList = resolutionList;
         } else if (type == ResolvableType.YANG_BASE) {
             baseResolutionList = resolutionList;
         } else if (type == ResolvableType.YANG_AUGMENT) {
             augmentResolutionList = resolutionList;
         } else if (type == ResolvableType.YANG_IDENTITYREF) {
-            identityrefResolutionList = resolutionList;
+            identityRefResolutionList = resolutionList;
         }
 
     }
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNode.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNode.java
index 0c72c61..d501b0b 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNode.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNode.java
@@ -16,6 +16,7 @@
 package org.onosproject.yangutils.datamodel;
 
 import java.io.Serializable;
+
 import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
 import org.onosproject.yangutils.datamodel.utils.Parsable;
 
@@ -185,7 +186,7 @@
      *
      * @param sibling YANG node
      */
-    private void setNextSibling(YangNode sibling) {
+    public void setNextSibling(YangNode sibling) {
         nextSibling = sibling;
     }
 
@@ -203,7 +204,7 @@
      *
      * @param previousSibling points to predecessor sibling
      */
-    private void setPreviousSibling(YangNode previousSibling) {
+    public void setPreviousSibling(YangNode previousSibling) {
         this.previousSibling = previousSibling;
     }
 
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java
index b08fb03..0484b0e 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java
@@ -124,8 +124,8 @@
      */
     public YangNotification() {
         super(YangNodeType.NOTIFICATION_NODE);
-        listOfLeaf = new LinkedList<YangLeaf>();
-        listOfLeafList = new LinkedList<YangLeafList>();
+        listOfLeaf = new LinkedList<>();
+        listOfLeafList = new LinkedList<>();
     }
 
     @Override
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
index 810a206..0e496bb 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
@@ -70,7 +70,7 @@
  */
 public class YangOutput
         extends YangNode
-        implements YangLeavesHolder, Parsable, CollisionDetector, YangAugmentableNode {
+        implements YangLeavesHolder, Parsable, CollisionDetector, YangAugmentableNode, YangIsFilterContentNodes {
 
     private static final long serialVersionUID = 806201612L;
 
@@ -96,8 +96,8 @@
      */
     public YangOutput() {
         super(YangNodeType.OUTPUT_NODE);
-        listOfLeaf = new LinkedList<YangLeaf>();
-        listOfLeafList = new LinkedList<YangLeafList>();
+        listOfLeaf = new LinkedList<>();
+        listOfLeafList = new LinkedList<>();
     }
 
     @Override
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSubModule.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSubModule.java
index 800e062..a58eb7d 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSubModule.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSubModule.java
@@ -82,7 +82,7 @@
 public class YangSubModule
         extends YangNode
         implements YangLeavesHolder, YangDesc, YangReference, Parsable, CollisionDetector, YangReferenceResolver,
-        RpcNotificationContainer, YangFeatureHolder {
+        RpcNotificationContainer, YangFeatureHolder, YangIsFilterContentNodes {
 
     private static final long serialVersionUID = 806201614L;
 
@@ -209,9 +209,9 @@
     private List<YangResolutionInfo> ifFeatureResolutionList;
 
     /**
-     * Leafref resolution list.
+     * LeafRef resolution list.
      */
-    private List<YangResolutionInfo> leafrefResolutionList;
+    private List<YangResolutionInfo> leafRefResolutionList;
 
     /**
      * Base resolution list.
@@ -219,9 +219,9 @@
     private List<YangResolutionInfo> baseResolutionList;
 
     /**
-     * Identityref resolution list.
+     * IdentityRef resolution list.
      */
-    private List<YangResolutionInfo> identityrefResolutionList;
+    private List<YangResolutionInfo> identityRefResolutionList;
 
     /**
      * Compiler annotation list.
@@ -247,15 +247,15 @@
         augmentResolutionList = new LinkedList<>();
         usesResolutionList = new LinkedList<>();
         ifFeatureResolutionList = new LinkedList<>();
-        leafrefResolutionList = new LinkedList<>();
+        leafRefResolutionList = new LinkedList<>();
         baseResolutionList = new LinkedList<>();
-        identityrefResolutionList = new LinkedList<>();
+        identityRefResolutionList = new LinkedList<>();
         compilerAnnotationList = new LinkedList<>();
-        importList = new LinkedList<YangImport>();
-        includeList = new LinkedList<YangInclude>();
-        listOfLeaf = new LinkedList<YangLeaf>();
-        listOfLeafList = new LinkedList<YangLeafList>();
-        extensionList = new LinkedList<YangExtension>();
+        importList = new LinkedList<>();
+        includeList = new LinkedList<>();
+        listOfLeaf = new LinkedList<>();
+        listOfLeafList = new LinkedList<>();
+        extensionList = new LinkedList<>();
     }
 
     /**
@@ -592,11 +592,11 @@
         } else if (type == ResolvableType.YANG_IF_FEATURE) {
             return ifFeatureResolutionList;
         } else if (type == ResolvableType.YANG_LEAFREF) {
-            return leafrefResolutionList;
+            return leafRefResolutionList;
         } else if (type == ResolvableType.YANG_BASE) {
             return baseResolutionList;
         } else {
-            return identityrefResolutionList;
+            return identityRefResolutionList;
         }
     }
 
@@ -610,13 +610,13 @@
         } else if (type == ResolvableType.YANG_IF_FEATURE) {
             ifFeatureResolutionList.add(resolutionInfo);
         } else if (type == ResolvableType.YANG_LEAFREF) {
-            leafrefResolutionList.add(resolutionInfo);
+            leafRefResolutionList.add(resolutionInfo);
         } else if (type == ResolvableType.YANG_BASE) {
             baseResolutionList.add(resolutionInfo);
         } else if (type == ResolvableType.YANG_AUGMENT) {
             augmentResolutionList.add(resolutionInfo);
         } else if (type == ResolvableType.YANG_IDENTITYREF) {
-            identityrefResolutionList.add(resolutionInfo);
+            identityRefResolutionList.add(resolutionInfo);
         }
     }
 
@@ -630,13 +630,13 @@
         } else if (type == ResolvableType.YANG_IF_FEATURE) {
             ifFeatureResolutionList.add((YangResolutionInfo) resolutionList);
         } else if (type == ResolvableType.YANG_LEAFREF) {
-            leafrefResolutionList = resolutionList;
+            leafRefResolutionList = resolutionList;
         } else if (type == ResolvableType.YANG_BASE) {
             baseResolutionList = resolutionList;
         } else if (type == ResolvableType.YANG_AUGMENT) {
             augmentResolutionList = resolutionList;
         } else if (type == ResolvableType.YANG_IDENTITYREF) {
-            identityrefResolutionList = resolutionList;
+            identityRefResolutionList = resolutionList;
         }
 
     }
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangType.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangType.java
index 45f0df6..ca442e6 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangType.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangType.java
@@ -276,7 +276,7 @@
      * @param value input data value
      * @throws DataModelException a violation of data model rules
      */
-    public void isValidValue(String value) throws DataModelException {
+    void isValidValue(String value) throws DataModelException {
         switch (getDataType()) {
             case INT8:
             case INT16:
@@ -291,7 +291,7 @@
                 } else {
                     if (!((YangRangeRestriction) getDataTypeExtendedInfo()).isValidValueString(value)) {
                         throw new DataTypeException("YANG file error : Input value \"" + value + "\" is not a valid " +
-                                                            getDataType());
+                                getDataType());
                     }
                 }
                 break;
@@ -301,7 +301,7 @@
                 YangDecimal64<YangRangeRestriction> decimal64 =
                         (YangDecimal64<YangRangeRestriction>) getDataTypeExtendedInfo();
                 validateDecimal64(value, decimal64.getFractionDigit(),
-                                        decimal64.getRangeRestrictedExtendedInfo());
+                        decimal64.getRangeRestrictedExtendedInfo());
                 break;
             }
             case STRING: {
@@ -311,14 +311,14 @@
                         && ((YangStringRestriction) getDataTypeExtendedInfo())
                         .isValidStringOnPatternRestriction(value))) {
                     throw new DataTypeException("YANG file error : Input value \"" + value + "\" is not a valid " +
-                                                        getDataType());
+                            getDataType());
                 }
                 break;
             }
             case BOOLEAN:
                 if (!(value.equals(DataModelUtils.TRUE) || value.equals(DataModelUtils.FALSE))) {
                     throw new DataTypeException("YANG file error : Input value \"" + value + "\" is not a valid " +
-                                                        getDataType());
+                            getDataType());
                 }
                 break;
             case ENUMERATION: {
@@ -334,7 +334,7 @@
 
                 if (!isValidated) {
                     throw new DataTypeException("YANG file error : Input value \"" + value + "\" is not a valid " +
-                                                        getDataType());
+                            getDataType());
                 }
                 break;
             }
@@ -342,14 +342,14 @@
                 YangBits bits = (YangBits) getDataTypeExtendedInfo();
                 if (bits.fromString(value) == null) {
                     throw new DataTypeException("YANG file error : Input value \"" + value + "\" is not a valid " +
-                                                        getDataType());
+                            getDataType());
                 }
                 break;
             }
             case BINARY: {
                 if (!isValidBinary(value, (YangRangeRestriction) getDataTypeExtendedInfo())) {
                     throw new DataTypeException("YANG file error : Input value \"" + value + "\" is not a valid " +
-                                                        getDataType());
+                            getDataType());
                 }
                 break;
             }
@@ -365,13 +365,13 @@
             case EMPTY: {
                 if (value.length() > 0) {
                     throw new DataTypeException("YANG file error : Input value \"" + value
-                                                        + "\" is not allowed for a data type " + getDataType());
+                            + "\" is not allowed for a data type " + getDataType());
                 }
                 break;
             }
             case UNION: {
                 ListIterator<YangType<?>> listIterator = ((YangUnion) getDataTypeExtendedInfo()).getTypeList()
-                                                                                                .listIterator();
+                        .listIterator();
                 boolean isValidated = false;
                 while (listIterator.hasNext()) {
                     YangType<?> type = (YangType<?>) listIterator.next();
@@ -386,7 +386,7 @@
 
                 if (!isValidated) {
                     throw new DataTypeException("YANG file error : Input value \"" + value + "\" is not a valid " +
-                                                        getDataType());
+                            getDataType());
                 }
                 break;
             }
@@ -399,13 +399,13 @@
                 if (isOfRangeRestrictedType(dataType)) {
                     if (((YangDerivedInfo) getDataTypeExtendedInfo()).getResolvedExtendedInfo() == null) {
                         getDataObjectFromString(value,
-                                                ((YangDerivedInfo) getDataTypeExtendedInfo())
-                                                        .getEffectiveBuiltInType());
+                                ((YangDerivedInfo) getDataTypeExtendedInfo())
+                                        .getEffectiveBuiltInType());
                     } else {
                         if (!((YangRangeRestriction) ((YangDerivedInfo) getDataTypeExtendedInfo())
                                 .getResolvedExtendedInfo()).isValidValueString(value)) {
                             throw new DataTypeException("YANG file error : Input value \"" + value
-                                                                + "\" is not a valid " + dataType);
+                                    + "\" is not a valid " + dataType);
                         }
                     }
                 } else if (dataType == YangDataTypes.STRING) {
@@ -416,20 +416,20 @@
                         if (!(stringRestriction.isValidStringOnLengthRestriction(value) &&
                                 stringRestriction.isValidStringOnPatternRestriction(value))) {
                             throw new DataTypeException("YANG file error : Input value \"" + value
-                                                                + "\" is not a valid " + dataType);
+                                    + "\" is not a valid " + dataType);
                         }
                     }
                 } else if (dataType == YangDataTypes.BITS) {
                     YangBits bits = (YangBits) getDataTypeExtendedInfo();
                     if (bits.fromString(value) == null) {
                         throw new DataTypeException("YANG file error : Input value \"" + value + "\" is not a valid " +
-                                                            dataType);
+                                dataType);
                     }
                 } else if (dataType == YangDataTypes.BINARY) {
                     if (!isValidBinary(value, (YangRangeRestriction) ((YangDerivedInfo)
                             getDataTypeExtendedInfo()).getResolvedExtendedInfo())) {
                         throw new DataTypeException("YANG file error : Input value \"" + value + "\" is not a valid " +
-                                                            dataType);
+                                dataType);
                     }
                 } else if (dataType == YangDataTypes.DECIMAL64) {
                     YangDerivedInfo derivedInfo = (YangDerivedInfo) getDataTypeExtendedInfo();
@@ -439,13 +439,13 @@
                     YangDecimal64<YangRangeRestriction> decimal64 = decimal64Type.getDataTypeExtendedInfo();
                     // Fraction-Digits and range needs to get it from yang
                     validateDecimal64(value, decimal64.getFractionDigit(),
-                                            decimal64.getRangeRestrictedExtendedInfo());
+                            decimal64.getRangeRestrictedExtendedInfo());
                 }
                 break;
             }
             default: {
                 throw new DataTypeException("YANG file error : Input value \"" + value + "\" received for " +
-                                                    "unsupported data type " + getDataType());
+                        "unsupported data type " + getDataType());
             }
         }
     }
@@ -456,7 +456,7 @@
      *
      * @param value decimal64 value
      */
-    private  void validateDecimal64(String value, int fractionDigit, YangRangeRestriction rangeRestriction)
+    private void validateDecimal64(String value, int fractionDigit, YangRangeRestriction rangeRestriction)
             throws DataModelException {
         YangDecimal64<YangRangeRestriction> decimal64 = YangDecimal64.fromString(value);
         decimal64.setFractionDigit(fractionDigit);
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangUses.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangUses.java
index 6b76dfd..957000d 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangUses.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangUses.java
@@ -17,6 +17,7 @@
 
 import java.util.LinkedList;
 import java.util.List;
+
 import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
 import org.onosproject.yangutils.datamodel.utils.Parsable;
 import org.onosproject.yangutils.datamodel.utils.ResolvableStatus;
@@ -68,7 +69,7 @@
 public class YangUses
         extends YangNode
         implements YangCommonInfo, Parsable, Resolvable, CollisionDetector, YangWhenHolder,
-        YangIfFeatureHolder {
+        YangIfFeatureHolder, YangTranslatorOperatorNode {
 
     private static final long serialVersionUID = 806201617L;
 
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangPluginConfig.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangPluginConfig.java
index 44ce306..353d025 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangPluginConfig.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangPluginConfig.java
@@ -27,27 +27,22 @@
     private String codeGenDir;
 
     /**
-     * Contains the code generation directory.
-     */
-    private String managerCodeGenDir;
-
-    /**
      * Contains information of naming conflicts that can be resolved.
      */
     private YangToJavaNamingConflictUtil conflictResolver;
 
     /**
+     * Java code generation is for sbi.
+     */
+    private String codeGenerateForsbi;
+
+    /**
      * Creates an object for YANG plugin config.
      */
     public YangPluginConfig() {
     }
 
     /**
-     * Java code generation is for sbi.
-     */
-    private String codeGenerateForsbi;
-
-    /**
      * Returns the string for code generation.
      *
      * @return returns the string for code generation.
@@ -101,21 +96,4 @@
         return conflictResolver;
     }
 
-    /**
-     * Returns manager's code generation directory.
-     *
-     * @return manager's code generation directory
-     */
-    public String getManagerCodeGenDir() {
-        return managerCodeGenDir;
-    }
-
-    /**
-     * Sets manager's code generation directory.
-     *
-     * @param moduleCodeGenDir manager's code generation directory
-     */
-    public void setManagerCodeGenDir(String moduleCodeGenDir) {
-        this.managerCodeGenDir = moduleCodeGenDir;
-    }
 }
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/DataModelUtils.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/DataModelUtils.java
index d6e7217..1da8a1a 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/DataModelUtils.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/DataModelUtils.java
@@ -16,6 +16,22 @@
 
 package org.onosproject.yangutils.datamodel.utils;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
 import org.onosproject.yangutils.datamodel.CollisionDetector;
 import org.onosproject.yangutils.datamodel.ResolvableType;
 import org.onosproject.yangutils.datamodel.YangAtomicPath;
@@ -41,22 +57,13 @@
 import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
 import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
 
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
 /**
  * Represents utilities for data model tree.
  */
 public final class DataModelUtils {
     public static final String TRUE = "true";
     public static final String FALSE = "false";
+    private static final String SLASH = File.separator;
 
     /**
      * Creates a new data model tree utility.
@@ -103,7 +110,7 @@
      * @param node           node instance of calling node
      * @throws DataModelException a violation of data model rules
      */
-    public static void detectCollidingForUsesGrouping(String identifierName, YangConstructType dataType, YangNode node)
+    private static void detectCollidingForUsesGrouping(String identifierName, YangConstructType dataType, YangNode node)
             throws DataModelException {
 
         node = node.getChild();
@@ -297,27 +304,24 @@
     /**
      * Returns de-serializes YANG data-model nodes.
      *
-     * @param serializableInfoSet YANG file info set
+     * @param serializedFileInfo serialized File Info
      * @return de-serializes YANG data-model nodes
      * @throws IOException when fails do IO operations
      */
-    public static List<YangNode> deSerializeDataModel(List<String> serializableInfoSet) throws IOException {
+    public static YangNode deSerializeDataModel(String serializedFileInfo) throws IOException {
 
-        List<YangNode> nodes = new ArrayList<>();
-        for (String fileInfo : serializableInfoSet) {
-            YangNode node = null;
-            try {
-                FileInputStream fileInputStream = new FileInputStream(fileInfo);
-                ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
-                node = (YangNode) objectInputStream.readObject();
-                nodes.add(node);
-                objectInputStream.close();
-                fileInputStream.close();
-            } catch (IOException | ClassNotFoundException e) {
-                throw new IOException(fileInfo + " not found.");
-            }
+        YangNode node;
+        try {
+            FileInputStream fileInputStream = new FileInputStream(serializedFileInfo);
+            ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
+            node = (YangNode) objectInputStream.readObject();
+            objectInputStream.close();
+            fileInputStream.close();
+        } catch (IOException | ClassNotFoundException e) {
+            throw new IOException(serializedFileInfo + " not found.");
         }
-        return nodes;
+
+        return node;
     }
 
     /**
@@ -332,7 +336,7 @@
             throws CloneNotSupportedException, DataModelException {
         List<YangLeaf> currentListOfLeaves = leavesHolder.getListOfLeaf();
         if (currentListOfLeaves != null) {
-            List<YangLeaf> clonedLeavesList = new LinkedList<YangLeaf>();
+            List<YangLeaf> clonedLeavesList = new LinkedList<>();
             for (YangLeaf leaf : currentListOfLeaves) {
                 YangLeaf clonedLeaf = leaf.clone();
                 if (yangUses.getCurrentGroupingDepth() == 0) {
@@ -350,7 +354,7 @@
 
         List<YangLeafList> currentListOfLeafList = leavesHolder.getListOfLeafList();
         if (currentListOfLeafList != null) {
-            List<YangLeafList> clonedListOfLeafList = new LinkedList<YangLeafList>();
+            List<YangLeafList> clonedListOfLeafList = new LinkedList<>();
             for (YangLeafList leafList : currentListOfLeafList) {
                 YangLeafList clonedLeafList = leafList.clone();
                 if (yangUses.getCurrentGroupingDepth() == 0) {
@@ -410,11 +414,9 @@
             while (atomicPathIterator.hasNext()) {
                 YangAtomicPath atomicPath = atomicPathIterator.next();
                 Map<String, String> prefixesAndItsImportNameNode = leafrefForCloning.getPrefixAndItsImportedModule();
-                if (!prefixesAndItsImportNameNode.isEmpty() || prefixesAndItsImportNameNode != null) {
-                    String prefixInPath = atomicPath.getNodeIdentifier().getPrefix();
-                    String importedNodeName = prefixesAndItsImportNameNode.get(prefixInPath);
-                    assignCurrentLeafrefWithNewPrefixes(importedNodeName, atomicPath, yangUses);
-                }
+                String prefixInPath = atomicPath.getNodeIdentifier().getPrefix();
+                String importedNodeName = prefixesAndItsImportNameNode.get(prefixInPath);
+                assignCurrentLeafedWithNewPrefixes(importedNodeName, atomicPath, yangUses);
             }
         }
     }
@@ -427,8 +429,8 @@
      * @param node             instance of YANG uses where cloning is done
      * @throws DataModelException data model error
      */
-    private static void assignCurrentLeafrefWithNewPrefixes(String importedNodeName, YangAtomicPath atomicPath,
-                                                            YangNode node) throws DataModelException {
+    private static void assignCurrentLeafedWithNewPrefixes(String importedNodeName, YangAtomicPath atomicPath,
+                                                           YangNode node) throws DataModelException {
         while (!(node instanceof YangReferenceResolver)) {
             node = node.getParent();
             if (node == null) {
@@ -534,7 +536,7 @@
                 dataTypeName = unionNode.getName();
             }
             if (potentialTypeNode.getName().contentEquals(dataTypeName)) {
-                dataType.setDataTypeExtendedInfo((Object) potentialTypeNode);
+                dataType.setDataTypeExtendedInfo(potentialTypeNode);
                 return;
             }
             potentialTypeNode = potentialTypeNode.getNextSibling();
@@ -542,4 +544,52 @@
 
         throw new DataModelException("Data model error: cloned leaves type is not found");
     }
+
+    /**
+     * Parses jar file and returns list of serialized file names.
+     *
+     * @param jarFile   jar file to be parsed
+     * @param directory directory where to search
+     * @return list of serialized files
+     * @throws IOException when fails to do IO operations
+     */
+    public static List<YangNode> parseJarFile(String jarFile, String directory)
+            throws IOException {
+
+        List<YangNode> nodes = new ArrayList<>();
+        JarFile jar = new JarFile(jarFile);
+        Enumeration<?> enumEntries = jar.entries();
+
+        while (enumEntries.hasMoreElements()) {
+            JarEntry file = (JarEntry) enumEntries.nextElement();
+            if (file.getName().endsWith(".ser")) {
+
+                if (file.getName().contains(SLASH)) {
+                    String[] strArray = file.getName().split(SLASH);
+                    String tempPath = "";
+                    for (int i = 0; i < strArray.length - 1; i++) {
+                        tempPath = SLASH + tempPath + SLASH + strArray[i];
+                    }
+                    File dir = new File(directory + tempPath);
+                    dir.mkdirs();
+                }
+                File serializedFile = new File(directory + SLASH + file.getName());
+                if (file.isDirectory()) {
+                    serializedFile.mkdirs();
+                    continue;
+                }
+                InputStream inputStream = jar.getInputStream(file);
+
+                FileOutputStream fileOutputStream = new FileOutputStream(serializedFile);
+                while (inputStream.available() > 0) {
+                    fileOutputStream.write(inputStream.read());
+                }
+                fileOutputStream.close();
+                inputStream.close();
+                nodes.add(deSerializeDataModel(serializedFile.toString()));
+            }
+        }
+        jar.close();
+        return nodes;
+    }
 }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerUtils.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerUtils.java
index abfae71..c9fedd8 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerUtils.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerUtils.java
@@ -22,6 +22,7 @@
 import java.util.Set;
 import java.util.regex.Pattern;
 
+import org.onosproject.yangutils.datamodel.YangAtomicPath;
 import org.onosproject.yangutils.datamodel.YangAugment;
 import org.onosproject.yangutils.datamodel.YangAugmentableNode;
 import org.onosproject.yangutils.datamodel.YangAugmentedInfo;
@@ -41,7 +42,6 @@
 
 import static org.onosproject.yangutils.utils.UtilConstants.COLON;
 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
-import static org.onosproject.yangutils.utils.UtilConstants.SLASH_FOR_STRING;
 
 /**
  * Represent utilities for YANG linker.
@@ -73,7 +73,7 @@
             }
         }
         if (targetNode instanceof YangChoice) {
-            // no need to check here.
+            //Do nothing
         } else {
             detectCollisionInLeaveHolders(targetNode, augment);
             while (augmentsChild != null) {
@@ -83,7 +83,7 @@
         }
     }
 
-    /*Detects collision between leaves/leaflists*/
+    /*Detects collision between leaves/leaf-lists*/
     private static void detectCollisionInLeaveHolders(YangNode targetNode, YangAugment augment) {
         YangLeavesHolder targetNodesLeavesHolder = (YangLeavesHolder) targetNode;
         YangNode parent = targetNode;
@@ -160,17 +160,19 @@
      * @param remainingAncestors ancestor count to move in augment path
      * @return list of path names needed in leafref
      */
-    public static List<String> getPathWithAugment(YangAugment augment, int remainingAncestors) {
-        String augmentName = augment.getName();
+    static List<String> getPathWithAugment(YangAugment augment, int remainingAncestors) {
         List<String> listOfPathName = new ArrayList<>();
-        if (augmentName.contains(SLASH_FOR_STRING)) {
-            String[] augmentNodeNames = augmentName.split(SLASH_FOR_STRING);
-            for (String valueInAugment : augmentNodeNames) {
-                if (valueInAugment != null && valueInAugment != EMPTY_STRING && !valueInAugment.isEmpty()) {
-                    listOfPathName.add(valueInAugment);
-                }
+        for (YangAtomicPath atomicPath : augment.getTargetNode()) {
+            if (atomicPath.getNodeIdentifier().getPrefix() != null && !atomicPath.getNodeIdentifier().getPrefix()
+                    .equals(EMPTY_STRING)) {
+                listOfPathName.add(atomicPath.getNodeIdentifier().getPrefix() + ":" +
+                        atomicPath.getNodeIdentifier().getName());
+            } else {
+                listOfPathName.add(atomicPath.getNodeIdentifier().getName());
             }
         }
+
+
         for (int countOfAncestor = 0; countOfAncestor < remainingAncestors; countOfAncestor++) {
             listOfPathName.remove(listOfPathName.size() - 1);
         }
@@ -185,7 +187,7 @@
      * @return parent node which can hold data
      * @throws LinkerException a violation of linker rules
      */
-    public static YangNode skipInvalidDataNodes(YangNode currentParent, YangLeafRef leafref) throws LinkerException {
+    static YangNode skipInvalidDataNodes(YangNode currentParent, YangLeafRef leafref) throws LinkerException {
         while (currentParent instanceof YangChoice || currentParent instanceof YangCase) {
             if (currentParent.getParent() == null) {
                 throw new LinkerException("YANG file error: The target node, in the leafref path " +
@@ -203,8 +205,8 @@
      * @param yangConstruct        yang construct for creating error message
      * @return valid node identifier
      */
-    public static YangNodeIdentifier getValidNodeIdentifier(String nodeIdentifierString,
-                                                            YangConstructType yangConstruct) {
+    static YangNodeIdentifier getValidNodeIdentifier(String nodeIdentifierString,
+                                                     YangConstructType yangConstruct) {
         String[] tmpData = nodeIdentifierString.split(Pattern.quote(COLON));
         if (tmpData.length == 1) {
             YangNodeIdentifier nodeIdentifier = new YangNodeIdentifier();
@@ -264,7 +266,7 @@
      *
      * @param yangNode YANG node information
      */
-    public static void updateFilePriorityOfNode(YangNode yangNode) {
+    private static void updateFilePriorityOfNode(YangNode yangNode) {
         int curNodePriority = yangNode.getPriority();
         if (yangNode instanceof YangReferenceResolver) {
             List<YangImport> yangImportList = ((YangReferenceResolver) yangNode).getImportList();
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java
index d7f0428..0cd359b 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java
@@ -21,6 +21,7 @@
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Stack;
+
 import org.onosproject.yangutils.datamodel.Resolvable;
 import org.onosproject.yangutils.datamodel.ResolvableType;
 import org.onosproject.yangutils.datamodel.TraversalType;
@@ -1221,7 +1222,7 @@
         YangXpathLinker<T> xPathLinker = new YangXpathLinker<T>();
 
         if (entityToResolve instanceof YangAugment) {
-            YangNode targetNode = null;
+            YangNode targetNode;
             YangAugment augment = (YangAugment) entityToResolve;
             targetNode = xPathLinker.processAugmentXpathLinking(augment.getTargetNode(),
                     (YangNode) root);
@@ -1485,9 +1486,9 @@
     /**
      * Fills the absolute path values in the leafref from relative path.
      *
-     * @param leafref              instance of YANG leafref
-     * @param pathNameToBePrefixed path name which has to be prefixed to relative path
-     * @param atomicPathsInRelative   atomic paths in relative
+     * @param leafref               instance of YANG leafref
+     * @param pathNameToBePrefixed  path name which has to be prefixed to relative path
+     * @param atomicPathsInRelative atomic paths in relative
      * @throws DataModelException a violation of data model rules
      */
     private void fillAbsolutePathValuesInLeafref(YangLeafRef leafref, String pathNameToBePrefixed,
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java
index 9d78d13..b04f617 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java
@@ -17,6 +17,7 @@
 package org.onosproject.yangutils.parser.impl;
 
 import java.io.IOException;
+
 import org.antlr.v4.runtime.ANTLRFileStream;
 import org.antlr.v4.runtime.ANTLRInputStream;
 import org.antlr.v4.runtime.CommonTokenStream;
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangFileInfo.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangFileInfo.java
index 6c16aa2..4eb22e5 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangFileInfo.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangFileInfo.java
@@ -24,7 +24,7 @@
 /**
  * Represents YANG file information.
  */
-public class YangFileInfo {
+class YangFileInfo {
 
     /**
      * YANG file name.
@@ -79,7 +79,7 @@
      *
      * @return yangFileName YANG file name
      */
-    public String getYangFileName() {
+    String getYangFileName() {
         return yangFileName;
     }
 
@@ -88,7 +88,7 @@
      *
      * @param yangFileName YANG file name
      */
-    public void setYangFileName(String yangFileName) {
+    void setYangFileName(String yangFileName) {
         this.yangFileName = yangFileName;
     }
 
@@ -151,7 +151,7 @@
      *
      * @return isForTranslator true if node need to be translated
      */
-    public boolean isForTranslator() {
+    boolean isForTranslator() {
         return isForTranslator;
     }
 
@@ -160,7 +160,7 @@
      *
      * @param isForTranslator true if node need to be translated
      */
-    public void setForTranslator(boolean isForTranslator) {
+    void setForTranslator(boolean isForTranslator) {
         this.isForTranslator = isForTranslator;
     }
 
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangPluginUtils.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangPluginUtils.java
index 148dd0e..e27468b 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangPluginUtils.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangPluginUtils.java
@@ -19,41 +19,36 @@
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.ObjectOutputStream;
 import java.nio.file.Files;
 import java.nio.file.StandardCopyOption;
 import java.util.ArrayList;
-import java.util.Enumeration;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.Resource;
 import org.apache.maven.project.MavenProject;
 import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.datamodel.utils.DataModelUtils;
 import org.slf4j.Logger;
 import org.sonatype.plexus.build.incremental.BuildContext;
 
-import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.deSerializeDataModel;
 import static org.onosproject.yangutils.utils.UtilConstants.HYPHEN;
 import static org.onosproject.yangutils.utils.UtilConstants.JAR;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
 import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
 import static org.onosproject.yangutils.utils.UtilConstants.TEMP;
 import static org.onosproject.yangutils.utils.UtilConstants.YANG_RESOURCES;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPackageDirPathFromJavaJPackage;
 import static org.slf4j.LoggerFactory.getLogger;
 
 /**
  * Represents YANG plugin utilities.
  */
-public final class YangPluginUtils {
+final class YangPluginUtils {
 
     private static final Logger log = getLogger(YangPluginUtils.class);
 
@@ -71,7 +66,7 @@
      * @param project current maven project
      * @param context current build context
      */
-    public static void addToCompilationRoot(String source, MavenProject project, BuildContext context) {
+    static void addToCompilationRoot(String source, MavenProject project, BuildContext context) {
         project.addCompileSourceRoot(source);
         context.refresh(project.getBasedir());
         log.info("Source directory added to compilation root: " + source);
@@ -85,7 +80,7 @@
      * @param project      maven project
      * @throws IOException when fails to copy files to destination resource directory
      */
-    public static void copyYangFilesToTarget(Set<YangFileInfo> yangFileInfo, String outputDir, MavenProject project)
+    static void copyYangFilesToTarget(Set<YangFileInfo> yangFileInfo, String outputDir, MavenProject project)
             throws IOException {
 
         List<File> files = getListOfFile(yangFileInfo);
@@ -129,8 +124,8 @@
      * @param operation   true if need to add to resource
      * @throws IOException when fails to do IO operations
      */
-    public static void serializeDataModel(String directory, Set<YangFileInfo> fileInfoSet,
-                                          MavenProject project, boolean operation) throws IOException {
+    static void serializeDataModel(String directory, Set<YangFileInfo> fileInfoSet,
+                                   MavenProject project, boolean operation) throws IOException {
 
         String serFileDirPath = directory + TARGET_RESOURCE_PATH;
         File dir = new File(serFileDirPath);
@@ -142,7 +137,7 @@
 
         for (YangFileInfo fileInfo : fileInfoSet) {
 
-            String serFileName = serFileDirPath + getCamelCase(fileInfo.getRootNode().getName(), null)
+            String serFileName = serFileDirPath + fileInfo.getRootNode().getName()
                     + SERIALIZED_FILE_EXTENSION;
             fileInfo.setSerializedFile(serFileName);
             FileOutputStream fileOutputStream = new FileOutputStream(serFileName);
@@ -201,67 +196,18 @@
      * @return list of resolved datamodel nodes
      * @throws IOException when fails to do IO operations
      */
-    public static List<YangNode> resolveInterJarDependencies(MavenProject project, ArtifactRepository localRepository,
-                                                             List<ArtifactRepository> remoteRepos, String directory)
+    static List<YangNode> resolveInterJarDependencies(MavenProject project, ArtifactRepository localRepository,
+                                                      List<ArtifactRepository> remoteRepos, String directory)
             throws IOException {
 
-        List<String> dependeciesJarPaths = resolveDependencyJarPath(project, localRepository, remoteRepos);
+        List<String> dependenciesJarPaths = resolveDependencyJarPath(project, localRepository, remoteRepos);
         List<YangNode> resolvedDataModelNodes = new ArrayList<>();
-        for (String dependecy : dependeciesJarPaths) {
-            resolvedDataModelNodes.addAll(deSerializeDataModel(parseJarFile(dependecy, directory)));
+        for (String dependency : dependenciesJarPaths) {
+            resolvedDataModelNodes.addAll(DataModelUtils.parseJarFile(dependency, directory));
         }
         return resolvedDataModelNodes;
     }
 
-    /**
-     * Parses jar file and returns list of serialized file names.
-     *
-     * @param jarFile   jar file to be parsed
-     * @param directory directory for keeping the searized files
-     * @return list of serialized files
-     * @throws IOException when fails to do IO operations
-     */
-    public static List<String> parseJarFile(String jarFile, String directory)
-            throws IOException {
-
-        List<String> serailizedFiles = new ArrayList<>();
-        JarFile jar = new JarFile(jarFile);
-        Enumeration<?> enumEntries = jar.entries();
-
-        File serializedFileDir = new File(directory);
-        serializedFileDir.mkdirs();
-        while (enumEntries.hasMoreElements()) {
-            JarEntry file = (JarEntry) enumEntries.nextElement();
-            if (file.getName().endsWith(SERIALIZED_FILE_EXTENSION)) {
-                if (file.getName().contains(SLASH)) {
-                    String[] strArray = file.getName().split(SLASH);
-                    String tempPath = "";
-                    for (int i = 0; i < strArray.length - 1; i++) {
-                        tempPath = SLASH + tempPath + SLASH + strArray[i];
-                    }
-                    File dir = new File(directory + tempPath);
-                    dir.mkdirs();
-                }
-                File serailizedFile = new File(directory + SLASH + file.getName());
-                if (file.isDirectory()) {
-                    serailizedFile.mkdirs();
-                    continue;
-                }
-                InputStream inputStream = jar.getInputStream(file);
-
-                FileOutputStream fileOutputStream = new FileOutputStream(serailizedFile);
-                while (inputStream.available() > 0) {
-                    fileOutputStream.write(inputStream.read());
-                }
-                fileOutputStream.close();
-                inputStream.close();
-                serailizedFiles.add(serailizedFile.toString());
-            }
-        }
-        jar.close();
-        return serailizedFiles;
-    }
-
     /* Adds directory to resources of project */
     private static void addToProjectResource(String dir, MavenProject project) {
         Resource rsc = new Resource();
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
index deef94e..d370f01 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
@@ -32,6 +32,8 @@
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
+import org.onosproject.yangutils.datamodel.javadatamodel.YangToJavaNamingConflictUtil;
 import org.onosproject.yangutils.linker.YangLinker;
 import org.onosproject.yangutils.linker.exceptions.LinkerException;
 import org.onosproject.yangutils.linker.impl.YangLinkerManager;
@@ -39,8 +41,6 @@
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
 import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
-import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
-import org.onosproject.yangutils.datamodel.javadatamodel.YangToJavaNamingConflictUtil;
 import org.sonatype.plexus.build.incremental.BuildContext;
 
 import static org.apache.maven.plugins.annotations.LifecyclePhase.GENERATE_SOURCES;
@@ -70,7 +70,7 @@
         extends AbstractMojo {
 
     private static final String DEFAULT_PKG = SLASH + getPackageDirPathFromJavaJPackage(DEFAULT_BASE_PKG);
-    YangPluginConfig yangPlugin = new YangPluginConfig();
+    private YangPluginConfig yangPlugin = new YangPluginConfig();
     private YangNode rootNode;
     // YANG file information set.
     private Set<YangFileInfo> yangFileInfoSet = new HashSet<>();
@@ -91,12 +91,6 @@
     private String classFileDir;
 
     /**
-     * Source directory for manager's generated files.
-     */
-    @Parameter(property = "managerFileDir", defaultValue = "src/main/java")
-    private String managerFileDir;
-
-    /**
      * Base directory for project.
      */
     @Parameter(property = "basedir", defaultValue = "${basedir}")
@@ -159,8 +153,8 @@
     /**
      * Code generation is for nbi or sbi.
      */
-    @Parameter(property = "generateJavaFileForsbi", defaultValue = "nbi")
-    private String generateJavaFileForsbi;
+    @Parameter(property = "generateJavaFileForSbi", defaultValue = "nbi")
+    private String generateJavaFileForSbi;
 
     @Override
     public void execute()
@@ -171,12 +165,10 @@
             /*
              * For deleting the generated code in previous build.
              */
-            deleteDirectory(getDirectory(baseDir, classFileDir) + DEFAULT_PKG);
             deleteDirectory(getDirectory(baseDir, outputDirectory));
 
             String searchDir = getDirectory(baseDir, yangFilesDir);
             String codeGenDir = getDirectory(baseDir, classFileDir) + SLASH;
-            String managerCodeGenDir = getDirectory(baseDir, managerFileDir) + SLASH;
 
             // Creates conflict resolver and set values to it.
             YangToJavaNamingConflictUtil conflictResolver = new YangToJavaNamingConflictUtil();
@@ -185,10 +177,9 @@
             conflictResolver.setReplacementForUnderscore(replacementForUnderscore);
             conflictResolver.setPrefixForIdentifier(prefixForIdentifier);
             yangPlugin.setCodeGenDir(codeGenDir);
-            yangPlugin.setManagerCodeGenDir(managerCodeGenDir);
             yangPlugin.setConflictResolver(conflictResolver);
 
-            yangPlugin.setCodeGenerateForsbi(generateJavaFileForsbi.toLowerCase());
+            yangPlugin.setCodeGenerateForsbi(generateJavaFileForSbi.toLowerCase());
             /*
              * Obtain the YANG files at a path mentioned in plugin and creates
              * YANG file information set.
@@ -216,7 +207,6 @@
             serializeDataModel(getDirectory(baseDir, outputDirectory), getYangFileInfoSet(), project, true);
 
             addToCompilationRoot(codeGenDir, project, context);
-            addToCompilationRoot(managerCodeGenDir, project, context);
 
             copyYangFilesToTarget(getYangFileInfoSet(), getDirectory(baseDir, outputDirectory), project);
         } catch (IOException | ParserException e) {
@@ -232,7 +222,7 @@
                         "Error handler failed to delete files for data model node.");
             }
             throw new MojoExecutionException(
-                    "Exception occured due to " + e.getLocalizedMessage() + " in " + fileName
+                    "Exception occurred due to " + e.getLocalizedMessage() + " in " + fileName
                             + " YANG file.");
         }
     }
@@ -264,14 +254,14 @@
                 getYangFileInfoSet().add(dependentFileInfo);
             }
         } catch (IOException e) {
-            throw new IOException("failed to resolve in interjar scenario.");
+            throw new IOException("failed to resolve in inter-jar scenario.");
         }
     }
 
     /**
      * Links all the provided with the YANG file info set.
      *
-     * @throws MojoExecutionException a violation in mojo excecution
+     * @throws MojoExecutionException a violation in mojo execution
      */
     public void resolveDependenciesUsingLinker()
             throws MojoExecutionException {
@@ -378,7 +368,7 @@
      *
      * @return the YANG file info set
      */
-    public Set<YangFileInfo> getYangFileInfoSet() {
+    Set<YangFileInfo> getYangFileInfoSet() {
         return yangFileInfoSet;
     }
 
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/GeneratedJavaFileType.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/GeneratedJavaFileType.java
index 957ea1b..d05320a 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/GeneratedJavaFileType.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/GeneratedJavaFileType.java
@@ -39,7 +39,7 @@
     /**
      * Impl class file.
      */
-    public static final int IMPL_CLASS_MASK = 8;
+    public static final int DEFAULT_CLASS_MASK = 8;
 
     /**
      * Interface and class file.
@@ -69,7 +69,7 @@
     /**
      * Java class corresponding to typedef.
      */
-    public static final int GENERATE_TYPE_CLASS = GENERATE_TYPEDEF_CLASS
+    static final int GENERATE_TYPE_CLASS = GENERATE_TYPEDEF_CLASS
             | GENERATE_UNION_CLASS;
 
     /**
@@ -99,16 +99,6 @@
     public static final int GENERATE_IDENTITY_CLASS = 2048;
 
     /**
-     * Operation class file.
-     */
-    public static final int OPERATION_CLASS_MASK = 4096;
-
-    /**
-     * Operation class builder file.
-     */
-    public static final int OPERATION_BUILDER_CLASS_MASK = 8192;
-
-    /**
      * Creates an instance of generate java file type.
      */
     private GeneratedJavaFileType() {
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/GeneratedTempFileType.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/GeneratedTempFileType.java
index 2ffd282..781a6ba 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/GeneratedTempFileType.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/GeneratedTempFileType.java
@@ -122,6 +122,21 @@
     public static final int EVENT_SUBJECT_SETTER_MASK = 524288;
 
     /**
+     * Add to list method interface for class.
+     */
+    public static final int ADD_TO_LIST_INTERFACE_MASK = 1048576;
+
+    /**
+     * Add to list method implementation for class.
+     */
+    public static final int ADD_TO_LIST_IMPL_MASK = 2097152;
+
+    /**
+     * Leaf identifier enum attributes for class.
+     */
+    public static final int LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK = 4194304;
+
+    /**
      * Creates an instance of generated temp file type.
      */
     private GeneratedTempFileType() {
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java
index 1ffbc6e..254ea4a 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java
@@ -90,10 +90,6 @@
      * @return the data type info of attribute
      */
     public YangType<?> getAttributeType() {
-
-        if (attrType == null) {
-            throw new TranslatorException("Expected java attribute type is null");
-        }
         return attrType;
     }
 
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java
index afcb61a..77ff157 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java
@@ -17,11 +17,18 @@
 package org.onosproject.yangutils.translator.tojava;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
 import org.onosproject.yangutils.datamodel.TraversalType;
+import org.onosproject.yangutils.datamodel.YangAugment;
+import org.onosproject.yangutils.datamodel.YangCase;
+import org.onosproject.yangutils.datamodel.YangChoice;
 import org.onosproject.yangutils.datamodel.YangInput;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangNodeType;
 import org.onosproject.yangutils.datamodel.YangOutput;
+import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
 import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 import org.onosproject.yangutils.translator.exception.InvalidNodeForTranslatorException;
@@ -31,6 +38,11 @@
 import static org.onosproject.yangutils.datamodel.TraversalType.PARENT;
 import static org.onosproject.yangutils.datamodel.TraversalType.ROOT;
 import static org.onosproject.yangutils.datamodel.TraversalType.SIBILING;
+import static org.onosproject.yangutils.datamodel.utils.GeneratedLanguage.JAVA_GENERATION;
+import static org.onosproject.yangutils.translator.tojava.YangDataModelFactory.getYangCaseNode;
+import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.getAugmentClassName;
+import static org.onosproject.yangutils.utils.UtilConstants.CASE;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.searchAndDeleteTempDir;
 
 /**
@@ -88,6 +100,11 @@
         TraversalType curTraversal = ROOT;
 
         while (codeGenNode != null) {
+            if (codeGenNode instanceof YangAugment) {
+                if (((YangAugment) codeGenNode).getAugmentedNode() instanceof YangChoice) {
+                    addCaseNodeToChoiceTarget((YangAugment) codeGenNode);
+                }
+            }
             if (curTraversal != PARENT) {
                 if (!(codeGenNode instanceof JavaCodeGenerator)) {
                     throw new TranslatorException("Unsupported node to generate code");
@@ -126,8 +143,8 @@
                 try {
                     generateCodeExit(codeGenNode, yangPlugin);
                 } catch (Exception e) {
-                    close(codeGenNode, yangPlugin);
-                    throw new TranslatorException(e.getMessage());
+                  close(codeGenNode, yangPlugin);
+                  throw new TranslatorException(e.getMessage());
                 }
                 curTraversal = PARENT;
                 codeGenNode = codeGenNode.getParent();
@@ -285,7 +302,7 @@
                     searchAndDeleteTempDir(javaFileInfo.getBaseCodeGenPath() +
                             javaFileInfo.getPackageFilePath());
                 } else {
-                    searchAndDeleteTempDir(yangPlugin.getManagerCodeGenDir());
+                    searchAndDeleteTempDir(yangPlugin.getCodeGenDir());
                 }
             }
         }
@@ -347,4 +364,43 @@
         }
         return null;
     }
+
+    /**
+     * Adds a case node in augment when augmenting a choice node.
+     *
+     * @param augment augment node
+     */
+    private static void addCaseNodeToChoiceTarget(YangAugment augment) {
+        YangCase javaCase = getYangCaseNode(JAVA_GENERATION);
+
+        YangPluginConfig pluginConfig = new YangPluginConfig();
+        javaCase.setName(getAugmentClassName(augment, pluginConfig) + getCapitalCase(CASE));
+
+        if (augment.getListOfLeaf() != null) {
+            augment.getListOfLeaf().forEach(javaCase::addLeaf);
+            augment.getListOfLeaf().clear();
+        }
+        if (augment.getListOfLeafList() != null) {
+            augment.getListOfLeafList().forEach(javaCase::addLeafList);
+            augment.getListOfLeafList().clear();
+        }
+        YangNode child = augment.getChild();
+        List<YangNode> childNodes = new ArrayList<>();
+        while (child != null) {
+            child.setParent(javaCase);
+            childNodes.add(child);
+            child = child.getNextSibling();
+        }
+        augment.setChild(null);
+        try {
+            augment.addChild(javaCase);
+            for (YangNode node : childNodes) {
+                node.setNextSibling(null);
+                node.setPreviousSibling(null);
+                javaCase.addChild(node);
+            }
+        } catch (DataModelException e) {
+            System.out.print("failed to add child node due to " + javaCase.getName() + " " + e.getLocalizedMessage());
+        }
+    }
 }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
index c859b21..aa8b53f 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
@@ -42,9 +42,6 @@
 import static org.onosproject.yangutils.utils.UtilConstants.ONOS_EVENT_PKG;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
 import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
-import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_CLASS_IMPORT_CLASS;
-import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_CLASS_IMPORT_PKG;
-import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_OP_PARAM_INFO_CLASS;
 import static java.util.Collections.sort;
 
 /**
@@ -226,7 +223,7 @@
      *
      * @return import for list attribute
      */
-    private String getImportForList() {
+    String getImportForList() {
         return IMPORT + COLLECTION_IMPORTS + PERIOD + LIST + SEMI_COLAN + NEW_LINE;
     }
 
@@ -285,25 +282,6 @@
     }
 
     /**
-     * Returns import string for hash map class.
-     *
-     * @return import string for hash map class
-     */
-    String getYangAugmentedInfoImport() {
-        return IMPORT + YANG_AUGMENTED_INFO_CLASS_IMPORT_PKG + PERIOD + YANG_AUGMENTED_INFO_CLASS_IMPORT_CLASS;
-    }
-
-    /**
-     * Returns import string for YangAugmentedOpParamInfo class.
-     *
-     * @return import string for YangAugmentedOpParamInfo class
-     */
-    String getYangAugmentedOpParamInfoImport() {
-        return IMPORT + YANG_AUGMENTED_INFO_CLASS_IMPORT_PKG + PERIOD +
-                YANG_AUGMENTED_OP_PARAM_INFO_CLASS;
-    }
-
-    /**
      * Returns import for big integer.
      *
      * @return import for big integer
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
index f2b8198..5c675c6 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
@@ -36,7 +36,6 @@
  */
 public class JavaQualifiedTypeInfoTranslator extends JavaQualifiedTypeInfo
         implements Comparable<JavaQualifiedTypeInfoTranslator>, Serializable {
-
     private static final long serialVersionUID = 806201634L;
 
     /**
@@ -98,7 +97,7 @@
          * Current leaves holder is adding a leaf info as a attribute to the
          * current class.
          */
-        String className = AttributesJavaDataType.getJavaImportClass(leaf.getDataType(), leaf.isLeafList(),
+        String className = getJavaImportClass(leaf.getDataType(), leaf.isLeafList(),
                 leaf.getConflictResolveConfig());
         if (className != null) {
             /*
@@ -106,7 +105,7 @@
              * since it can be a derived type or a usage of wrapper classes.
              */
             importInfo.setClassInfo(className);
-            String classPkg = AttributesJavaDataType.getJavaImportPackage(leaf.getDataType(),
+            String classPkg = getJavaImportPackage(leaf.getDataType(),
                     leaf.isLeafList(), leaf.getConflictResolveConfig());
             if (classPkg == null) {
                 throw new TranslatorException("import package cannot be null when the class is used");
@@ -222,5 +221,4 @@
     public int compareTo(JavaQualifiedTypeInfoTranslator other) {
         return getClassInfo().compareTo(other.getClassInfo());
     }
-
 }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java
index 3a284bd..7a0ea11 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java
@@ -29,6 +29,7 @@
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPE_CLASS;
+import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
 
 /**
  * Represents implementation of java code fragments temporary implementations.
@@ -263,18 +264,24 @@
      * @param modifier     modifier for constructor.
      * @param toAppend     string which need to be appended with the class name
      * @param pluginConfig plugin configurations
+     * @param curNode      YANG node
      * @return default constructor for class
      * @throws IOException when fails to append to file
      */
-    public String addDefaultConstructor(String modifier, String toAppend, YangPluginConfig pluginConfig)
+    public String addDefaultConstructor(String modifier, String toAppend, YangPluginConfig pluginConfig,
+                                        YangNode curNode)
             throws IOException {
+        boolean isSuffix = false;
+        if (toAppend.equals(BUILDER)) {
+            isSuffix = true;
+        }
         if (getTypeTempFiles() != null) {
             return getTypeTempFiles()
-                    .addDefaultConstructor(modifier, toAppend, pluginConfig);
+                    .addDefaultConstructor(modifier, toAppend, pluginConfig, isSuffix);
         }
 
         if (getBeanTempFiles() != null) {
-            return getBeanTempFiles().addDefaultConstructor(modifier, toAppend, pluginConfig);
+            return getBeanTempFiles().addDefaultConstructor(modifier, toAppend, pluginConfig, isSuffix);
         }
 
         throw new TranslatorException("default constructor should not be added");
@@ -283,10 +290,11 @@
     /**
      * Adds build method's implementation for class.
      *
+     * @param curNode YANG node
      * @return build method implementation for class
      * @throws IOException when fails to append to temporary file
      */
-    public String addBuildMethodImpl()
+    public String addBuildMethodImpl(YangNode curNode)
             throws IOException {
         if (getBeanTempFiles() != null) {
             return getBeanTempFiles().addBuildMethodImpl();
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
index fe1578a..da252d1 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
@@ -22,26 +22,27 @@
 import java.util.List;
 import java.util.Map;
 
-import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
-import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
 import org.onosproject.yangutils.datamodel.YangEnum;
 import org.onosproject.yangutils.datamodel.YangEnumeration;
 import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
+import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaTypeTranslator;
-import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ENUM_IMPL_MASK;
 import static org.onosproject.yangutils.translator.tojava.JavaAttributeInfo.getAttributeInfoForTheData;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.generateEnumAttributeString;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateEnumClassFile;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.createPackage;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPrefixForIdentifier;
-import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.INT;
 import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_FIRST_DIGIT;
 import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUTO_PREFIX;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.createPackage;
+import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPrefixForIdentifier;
 
 /**
  * Represents implementation of java code fragments temporary implementations. Maintains the temp files required
@@ -227,8 +228,8 @@
      */
     public JavaAttributeInfo getJavaAttributeForEnum(YangPluginConfig pluginConfig) {
         YangJavaTypeTranslator<?> javaType = new YangJavaTypeTranslator<>();
-        javaType.setDataType(YangDataTypes.INT32);
-        javaType.setDataTypeName("int");
+        javaType.setDataType(INT32);
+        javaType.setDataTypeName(INT);
         javaType.updateJavaQualifiedInfo(pluginConfig.getConflictResolver());
         return getAttributeInfoForTheData(
                 javaType.getJavaQualifiedInfo(),
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEventFragmentFiles.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEventFragmentFiles.java
index cf8e73e..f0be0aa 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEventFragmentFiles.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEventFragmentFiles.java
@@ -20,6 +20,7 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
@@ -489,7 +490,7 @@
 
         JavaFileInfo parentInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
         return getFileObject(getDirPath(parentInfo), name, JAVA_FILE_EXTENSION,
-                parentInfo.getPluginConfig().getCodeGenDir());
+                parentInfo);
     }
 
     /**
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
index 36473ce..d5701ed 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
@@ -19,7 +19,6 @@
 import java.io.IOException;
 import java.util.List;
 
-import org.onosproject.yangutils.datamodel.YangAugment;
 import org.onosproject.yangutils.datamodel.YangAugmentableNode;
 import org.onosproject.yangutils.datamodel.YangCase;
 import org.onosproject.yangutils.datamodel.YangLeaf;
@@ -38,19 +37,21 @@
 import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.getParentNodeInGenCode;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.DEFAULT_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPE_CLASS;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.IMPL_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.INTERFACE_MASK;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.OPERATION_BUILDER_CLASS_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ADD_TO_LIST_IMPL_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ADD_TO_LIST_INTERFACE_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ATTRIBUTES_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EQUALS_IMPL_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.FROM_STRING_IMPL_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.GETTER_FOR_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.GETTER_FOR_INTERFACE_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.HASH_CODE_IMPL_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_INTERFACE_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.TO_STRING_IMPL_MASK;
@@ -58,18 +59,18 @@
 import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator.getQualifiedInfoOfFromString;
 import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator.getQualifiedTypeInfoOfCurNode;
 import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.updateJavaFileInfo;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaAttributeDefination;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.generateEnumAttributeString;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaAttributeDefinition;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaClassDefClose;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.sortImports;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateBuilderClassFile;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateBuilderInterfaceFile;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateImplClassFile;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateDefaultClassFile;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateInterfaceFile;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateOpParamBuilderClassFile;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateOpParamImplClassFile;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.addResolvedAugmentedDataNodeImports;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getFileObject;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.createPackage;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAddToListMethodImpl;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAddToListMethodInterface;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getBuildString;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getDefaultConstructorString;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEqualsMethod;
@@ -82,29 +83,25 @@
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterString;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringMethod;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.parseBuilderInterfaceBuildMethodString;
-import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE;
+import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST_IMPORT;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
-import static org.onosproject.yangutils.utils.UtilConstants.COMPONENT;
-import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE;
 import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.IMPORT;
 import static org.onosproject.yangutils.utils.UtilConstants.INTERFACE;
-import static org.onosproject.yangutils.utils.UtilConstants.MANAGER;
+import static org.onosproject.yangutils.utils.UtilConstants.INVOCATION_TARGET_EXCEPTION_IMPORT;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
-import static org.onosproject.yangutils.utils.UtilConstants.OPERATION;
+import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
 import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
 import static org.onosproject.yangutils.utils.UtilConstants.PROTECTED;
-import static org.onosproject.yangutils.utils.UtilConstants.REFERENCE;
-import static org.onosproject.yangutils.utils.UtilConstants.REFERENCE_CARDINALITY;
 import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
 import static org.onosproject.yangutils.utils.UtilConstants.SERVICE;
 import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
-import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
 import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
 import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.readAppendFile;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.ADD_TO_LIST;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getAbsolutePackagePath;
@@ -182,6 +179,21 @@
     private static final String FROM_STRING_METHOD_FILE_NAME = "FromString";
 
     /**
+     * File name for from add to list interface method.
+     */
+    private static final String ADD_TO_LIST_INTERFACE_METHOD_FILE_NAME = "addToList";
+
+    /**
+     * File name for from add to list impl method.
+     */
+    private static final String ADD_TO_LIST_IMPL_METHOD_FILE_NAME = "addToListImpl";
+
+    /**
+     * File name for from leaf identifier attributes.
+     */
+    private static final String LEAF_IDENTIFIER_ATTRIBUTES_FILE_NAME = "leafIdentifierAtr";
+
+    /**
      * File name for interface java file name suffix.
      */
     private static final String INTERFACE_FILE_NAME_SUFFIX = EMPTY_STRING;
@@ -237,21 +249,11 @@
     private File builderClassJavaFileHandle;
 
     /**
-     * Java file handle for builder op param class file.
-     */
-    private File builderOpParamClassJavaFileHandle;
-
-    /**
      * Java file handle for impl class file.
      */
     private File implClassJavaFileHandle;
 
     /**
-     * Java file handle for op param class file.
-     */
-    private File opParamClassJavaFileHandle;
-
-    /**
      * Temporary file handle for attribute.
      */
     private File attributesTempFileHandle;
@@ -297,20 +299,40 @@
     private File fromStringImplTempFileHandle;
 
     /**
+     * Temporary file handle for add to list interface method of class.
+     */
+    private File addToListInterfaceTempFileHandle;
+
+    /**
+     * Temporary file handle for add to list impl method of class.
+     */
+    private File addToListImplTempFileHandle;
+
+    /**
+     * Temporary file handle for leaf id attributes of enum.
+     */
+    private File leafIdAttributeTempFileHandle;
+
+    /**
      * Import info for case.
      */
     private JavaQualifiedTypeInfoTranslator caseImportInfo;
 
     /**
+     * Leaf count.
+     */
+    private int leafCount = 0;
+
+    /**
+     * If current node is root node.
+     */
+    private boolean isRooNode;
+
+    /**
      * Is attribute added.
      */
     private boolean isAttributePresent;
 
-    /**
-     * Base code gen path.
-     */
-    private String baseCodePath;
-
     TempJavaFragmentFiles() {
     }
 
@@ -325,21 +347,17 @@
         setJavaExtendsListHolder(new JavaExtendsListHolder());
         setJavaImportData(new JavaImportData());
         setJavaFileInfo(javaFileInfo);
-        if ((javaFileInfo.getGeneratedFileTypes() & GENERATE_SERVICE_AND_MANAGER) != 0) {
-            setBaseCodePath(getJavaFileInfo().getPluginConfig().getCodeGenDir());
-            setAbsoluteDirPath(getAbsolutePackagePath(getJavaFileInfo().getPluginConfig().getCodeGenDir(),
-                    getJavaFileInfo().getPackageFilePath()));
-        } else {
-            setBaseCodePath(getJavaFileInfo().getBaseCodeGenPath());
-            setAbsoluteDirPath(getAbsolutePackagePath(getJavaFileInfo().getBaseCodeGenPath(),
-                    getJavaFileInfo().getPackageFilePath()));
-        }
+        setAbsoluteDirPath(getAbsolutePackagePath(getJavaFileInfo().getBaseCodeGenPath(),
+                getJavaFileInfo().getPackageFilePath()));
+
         /*
          * Initialize getter when generation file type matches to interface
          * mask.
          */
         if ((getGeneratedJavaFiles() & INTERFACE_MASK) != 0) {
             addGeneratedTempFile(GETTER_FOR_INTERFACE_MASK);
+            addGeneratedTempFile(ADD_TO_LIST_INTERFACE_MASK);
+            addGeneratedTempFile(LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK);
         }
 
         /*
@@ -365,12 +383,13 @@
          * Initialize getterImpl, attributes, constructor, hash code, equals and
          * to strings when generation file type matches to impl class mask.
          */
-        if ((getGeneratedJavaFiles() & IMPL_CLASS_MASK) != 0) {
+        if ((getGeneratedJavaFiles() & DEFAULT_CLASS_MASK) != 0) {
             addGeneratedTempFile(ATTRIBUTES_MASK);
             addGeneratedTempFile(GETTER_FOR_CLASS_MASK);
             addGeneratedTempFile(HASH_CODE_IMPL_MASK);
             addGeneratedTempFile(EQUALS_IMPL_MASK);
             addGeneratedTempFile(TO_STRING_IMPL_MASK);
+            addGeneratedTempFile(ADD_TO_LIST_IMPL_MASK);
         }
 
         /*
@@ -398,23 +417,18 @@
         if ((getGeneratedTempFiles() & ATTRIBUTES_MASK) != 0) {
             setAttributesTempFileHandle(getTemporaryFileHandle(ATTRIBUTE_FILE_NAME));
         }
-
         if ((getGeneratedTempFiles() & GETTER_FOR_INTERFACE_MASK) != 0) {
             setGetterInterfaceTempFileHandle(getTemporaryFileHandle(GETTER_METHOD_FILE_NAME));
         }
-
         if ((getGeneratedTempFiles() & SETTER_FOR_INTERFACE_MASK) != 0) {
             setSetterInterfaceTempFileHandle(getTemporaryFileHandle(SETTER_METHOD_FILE_NAME));
         }
-
         if ((getGeneratedTempFiles() & GETTER_FOR_CLASS_MASK) != 0) {
             setGetterImplTempFileHandle(getTemporaryFileHandle(GETTER_METHOD_IMPL_FILE_NAME));
         }
-
         if ((getGeneratedTempFiles() & SETTER_FOR_CLASS_MASK) != 0) {
             setSetterImplTempFileHandle(getTemporaryFileHandle(SETTER_METHOD_IMPL_FILE_NAME));
         }
-
         if ((getGeneratedTempFiles() & HASH_CODE_IMPL_MASK) != 0) {
             setHashCodeImplTempFileHandle(getTemporaryFileHandle(HASH_CODE_METHOD_FILE_NAME));
         }
@@ -427,6 +441,15 @@
         if ((getGeneratedTempFiles() & FROM_STRING_IMPL_MASK) != 0) {
             setFromStringImplTempFileHandle(getTemporaryFileHandle(FROM_STRING_METHOD_FILE_NAME));
         }
+        if ((getGeneratedTempFiles() & ADD_TO_LIST_INTERFACE_MASK) != 0) {
+            setAddToListInterfaceTempFileHandle(getTemporaryFileHandle(ADD_TO_LIST_INTERFACE_METHOD_FILE_NAME));
+        }
+        if ((getGeneratedTempFiles() & ADD_TO_LIST_IMPL_MASK) != 0) {
+            setAddToListImplTempFileHandle(getTemporaryFileHandle(ADD_TO_LIST_IMPL_METHOD_FILE_NAME));
+        }
+        if ((getGeneratedTempFiles() & LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK) != 0) {
+            setLeafIdAttributeTempFileHandle(getTemporaryFileHandle(LEAF_IDENTIFIER_ATTRIBUTES_FILE_NAME));
+        }
     }
 
     /**
@@ -457,8 +480,7 @@
 
         JavaAttributeInfo javaAttributeInfo = getCurNodeAsAttributeInTarget(curNode,
                 parent, isList, tempJavaBeanFragmentFiles);
-
-        getNodesInterfaceFragmentFiles(parent, javaAttributeInfo, pluginConfig);
+        tempJavaBeanFragmentFiles.addJavaSnippetInfoToApplicableTempFiles(javaAttributeInfo, pluginConfig);
     }
 
     /**
@@ -493,20 +515,14 @@
 
         boolean isQualified;
         if ((tempJavaFragmentFiles instanceof TempJavaServiceFragmentFiles)
-                && (qualifiedTypeInfo.getClassInfo().contentEquals(SERVICE)
-                || qualifiedTypeInfo.getClassInfo().contentEquals(COMPONENT)
-                || qualifiedTypeInfo.getClassInfo().contentEquals(getCapitalCase(ACTIVATE))
-                || qualifiedTypeInfo.getClassInfo().contentEquals(getCapitalCase(DEACTIVATE))
-                || qualifiedTypeInfo.getClassInfo().contentEquals(REFERENCE_CARDINALITY)
-                || qualifiedTypeInfo.getClassInfo().contentEquals(REFERENCE))
-                || qualifiedTypeInfo.getClassInfo().contentEquals(getCapitalCase(fileInfo.getJavaName() + SERVICE))
-                || qualifiedTypeInfo.getClassInfo().contentEquals(getCapitalCase(fileInfo.getJavaName() + MANAGER))) {
+                && (qualifiedTypeInfo.getClassInfo().contentEquals(SERVICE))
+                || qualifiedTypeInfo.getClassInfo().contentEquals(getCapitalCase(fileInfo.getJavaName() + SERVICE))) {
 
             isQualified = true;
         } else {
             String className;
             if (tempJavaFragmentFiles instanceof TempJavaServiceFragmentFiles) {
-                className = getCapitalCase(fileInfo.getJavaName()) + "Service";
+                className = getCapitalCase(fileInfo.getJavaName()) + SERVICE;
             } else {
                 className = getCapitalCase(fileInfo.getJavaName());
             }
@@ -523,33 +539,6 @@
     }
 
     /**
-     * Adds java code snippet for corresponding files.
-     *
-     * @param node   java node
-     * @param attr   attribute info
-     * @param config plugin configurations
-     * @throws IOException when fails to do IO operations
-     */
-    private static void getNodesInterfaceFragmentFiles(YangNode node, JavaAttributeInfo attr,
-                                                       YangPluginConfig config) throws IOException {
-        TempJavaFragmentFiles tempJavaFragmentFiles;
-        JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) node).getJavaFileInfo();
-        if ((javaFileInfo.getGeneratedFileTypes() & GENERATE_SERVICE_AND_MANAGER) != 0) {
-            tempJavaFragmentFiles = ((TempJavaCodeFragmentFilesContainer) node)
-                    .getTempJavaCodeFragmentFiles()
-                    .getServiceTempFiles();
-            tempJavaFragmentFiles.addJavaSnippetInfoToApplicableTempFiles(attr, config);
-        }
-        if ((javaFileInfo.getGeneratedFileTypes() & GENERATE_INTERFACE_WITH_BUILDER) != 0) {
-            tempJavaFragmentFiles = ((TempJavaCodeFragmentFilesContainer) node)
-                    .getTempJavaCodeFragmentFiles()
-                    .getBeanTempFiles();
-            tempJavaFragmentFiles.addJavaSnippetInfoToApplicableTempFiles(attr, config);
-        }
-
-    }
-
-    /**
      * Returns java attribute for leaf.
      *
      * @param tempJavaFragmentFiles temporary generated file
@@ -593,42 +582,6 @@
                 true);
     }
 
-    /**
-     * Retrieves the temporary file handle of op param builder class.
-     *
-     * @return op param builder temporary file handle
-     */
-    private File getBuilderOpParamClassJavaFileHandle() {
-        return builderOpParamClassJavaFileHandle;
-    }
-
-    /**
-     * Sets the java file handle for op param builder class.
-     *
-     * @param builderOpParamClassJavaFileHandle java file handle
-     */
-    private void setBuilderOpParamClassJavaFileHandle(File builderOpParamClassJavaFileHandle) {
-        this.builderOpParamClassJavaFileHandle = builderOpParamClassJavaFileHandle;
-    }
-
-    /**
-     * Returns base code path.
-     *
-     * @return base code path
-     */
-    private String getBaseCodePath() {
-        return baseCodePath;
-    }
-
-    /**
-     * Sets base code path.
-     *
-     * @param baseCodePath base code path
-     */
-    void setBaseCodePath(String baseCodePath) {
-        this.baseCodePath = baseCodePath;
-    }
-
     /*
      * Retrieves the absolute path where the file needs to be generated.
      *
@@ -1047,9 +1000,15 @@
      */
     private void addSetterImpl(JavaAttributeInfo attr)
             throws IOException {
-        appendToFile(getSetterImplTempFileHandle(),
-                getOverRideString() + getSetterForClass(attr, getGeneratedJavaClassName(), getGeneratedJavaFiles())
-                        + NEW_LINE);
+        if (isRooNode()) {
+            appendToFile(getSetterImplTempFileHandle(),
+                    getSetterForClass(attr, getGeneratedJavaClassName(), getGeneratedJavaFiles())
+                            + NEW_LINE);
+        } else {
+            appendToFile(getSetterImplTempFileHandle(), getOverRideString() +
+                    getSetterForClass(attr, getGeneratedJavaClassName(), getGeneratedJavaFiles())
+                    + NEW_LINE);
+        }
     }
 
     /**
@@ -1063,8 +1022,13 @@
             throws IOException {
         if ((getGeneratedJavaFiles() & BUILDER_CLASS_MASK) != 0
                 || (getGeneratedJavaFiles() & GENERATE_SERVICE_AND_MANAGER) != 0) {
-            appendToFile(getGetterImplTempFileHandle(), getOverRideString() + getGetterForClass(attr,
-                    getGeneratedJavaFiles()) + NEW_LINE);
+            if (!isRooNode()) {
+                appendToFile(getGetterImplTempFileHandle(), getOverRideString() + getGetterForClass(attr,
+                        getGeneratedJavaFiles()) + NEW_LINE);
+            } else {
+                appendToFile(getGetterImplTempFileHandle(), getGetterForClass(attr,
+                        getGeneratedJavaFiles()) + NEW_LINE);
+            }
         } else {
             appendToFile(getGetterImplTempFileHandle(),
                     getJavaDoc(GETTER_METHOD, getCapitalCase(attr.getAttributeName()), false, pluginConfig)
@@ -1073,6 +1037,45 @@
     }
 
     /**
+     * Adds add to list interface method.
+     *
+     * @param attr         attribute
+     * @param pluginConfig plugin configurations
+     * @throws IOException when fails to do IO operations
+     */
+    private void addAddToListInterface(JavaAttributeInfo attr, YangPluginConfig pluginConfig) throws IOException {
+        appendToFile(getAddToListInterfaceTempFileHandle(),
+                getJavaDoc(ADD_TO_LIST, getCapitalCase(attr.getAttributeName()), false, pluginConfig)
+                        + getAddToListMethodInterface(attr) + NEW_LINE);
+    }
+
+    /**
+     * Adds add to list interface method.
+     *
+     * @param attr attribute
+     * @throws IOException when fails to do IO operations
+     */
+    private void addAddToListImpl(JavaAttributeInfo attr) throws IOException {
+        appendToFile(getAddToListImplTempFileHandle(),
+                getAddToListMethodImpl(attr) + NEW_LINE);
+    }
+
+    /**
+     * Adds leaf identifier enum attributes.
+     *
+     * @param attr             attribute
+     * @param value            value
+     * @param yangPluginConfig plugin config
+     * @throws IOException when fails to do IO operations
+     */
+    private void addLeafIdAttributes(JavaAttributeInfo attr, int value, YangPluginConfig yangPluginConfig)
+            throws IOException {
+        appendToFile(getLeafIdAttributeTempFileHandle(),
+                FOUR_SPACE_INDENTATION + generateEnumAttributeString(attr.getAttributeName(),
+                        value, yangPluginConfig));
+    }
+
+    /**
      * Adds build method for interface.
      *
      * @param pluginConfig plugin configurations
@@ -1092,7 +1095,7 @@
      */
     String addBuildMethodImpl()
             throws IOException {
-        return getBuildString(getGeneratedJavaClassName()) + NEW_LINE;
+        return getBuildString(getGeneratedJavaClassName(), isRooNode()) + NEW_LINE;
     }
 
     /**
@@ -1101,13 +1104,32 @@
      * @param modifier     modifier for constructor.
      * @param toAppend     string which need to be appended with the class name
      * @param pluginConfig plugin configurations
+     * @param isSuffix     is value need to be appended as suffix
      * @return default constructor for class
      * @throws IOException when fails to append to file
      */
-    String addDefaultConstructor(String modifier, String toAppend, YangPluginConfig pluginConfig)
+    String addDefaultConstructor(String modifier, String toAppend, YangPluginConfig pluginConfig, boolean isSuffix)
             throws IOException {
+        String name = getGeneratedJavaClassName();
+        if (isRooNode() && !toAppend.equals(BUILDER)) {
+            name = name + OP_PARAM;
+            return NEW_LINE
+                    + getDefaultConstructorString(name, modifier,
+                    pluginConfig);
+        }
+        if (isSuffix) {
+            return NEW_LINE +
+                    getDefaultConstructorString(name + toAppend, modifier, pluginConfig);
+        }
+        String appended;
+        if (toAppend.equals(DEFAULT)) {
+            appended = getCapitalCase(toAppend);
+        } else {
+            appended = toAppend;
+        }
         return NEW_LINE
-                + getDefaultConstructorString(getGeneratedJavaClassName() + toAppend, modifier, pluginConfig);
+                + getDefaultConstructorString(appended + name, modifier,
+                pluginConfig);
     }
 
     /**
@@ -1168,17 +1190,18 @@
             throws IOException {
         String path = getTempDirPath(getAbsoluteDirPath());
         File dir = new File(path);
+        boolean isCreated;
         if (!dir.exists()) {
-            boolean isCreated = dir.mkdirs();
+            isCreated = dir.mkdirs();
             if (!isCreated) {
                 throw new IOException("failed to create temporary directory for " + fileName);
             }
         }
         File file = new File(path + fileName + TEMP_FILE_EXTENSION);
         if (!file.exists()) {
-            boolean isCreated = file.createNewFile();
+            isCreated = file.createNewFile();
             if (!isCreated) {
-                throw new IOException("failed to create temporary files for " + fileName);
+                throw new IOException("failed to create temporary file for " + fileName);
             }
         } else {
             throw new IOException(fileName + " is reused due to YANG naming");
@@ -1195,7 +1218,7 @@
      */
     File getJavaFileHandle(String fileName)
             throws IOException {
-        return getFileObject(getDirPath(), fileName, JAVA_FILE_EXTENSION, getBaseCodePath());
+        return getFileObject(getDirPath(), fileName, JAVA_FILE_EXTENSION, getJavaFileInfo());
     }
 
     /**
@@ -1246,11 +1269,11 @@
             attributeAccessType = PROTECTED;
         }
         if (attr.isQualifiedName()) {
-            return getJavaAttributeDefination(attr.getImportInfo().getPkgInfo(),
+            return getJavaAttributeDefinition(attr.getImportInfo().getPkgInfo(),
                     attr.getImportInfo().getClassInfo(),
                     attributeName, attr.isListAttr(), attributeAccessType);
         } else {
-            return getJavaAttributeDefination(null, attr.getImportInfo().getClassInfo(), attributeName,
+            return getJavaAttributeDefinition(null, attr.getImportInfo().getClassInfo(), attributeName,
                     attr.isListAttr(), attributeAccessType);
         }
     }
@@ -1408,6 +1431,17 @@
         if ((getGeneratedTempFiles() & TO_STRING_IMPL_MASK) != 0) {
             addToStringMethod(newAttrInfo);
         }
+        if ((getGeneratedTempFiles() & ADD_TO_LIST_IMPL_MASK) != 0 && newAttrInfo.isListAttr()) {
+            addAddToListImpl(newAttrInfo);
+        }
+        if ((getGeneratedTempFiles() & ADD_TO_LIST_INTERFACE_MASK) != 0 && newAttrInfo.isListAttr()) {
+            addAddToListInterface(newAttrInfo, pluginConfig);
+        }
+        if ((getGeneratedTempFiles() & LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK) != 0 && !newAttrInfo.isListAttr()
+                && newAttrInfo.getAttributeType() != null) {
+            leafCount++;
+            addLeafIdAttributes(newAttrInfo, leafCount, pluginConfig);
+        }
 
         if (!newAttrInfo.isIntConflict() &&
                 !newAttrInfo.isLongConflict()) {
@@ -1445,31 +1479,17 @@
     /**
      * Returns java class name.
      *
+     * @param node YANG node
      * @return java class name
      */
-    private String getImplClassName() {
+    private String getImplClassName(YangNode node) {
+        if (node instanceof YangModule || node instanceof YangSubModule) {
+            return getCapitalCase(getJavaFileInfo().getJavaName()) + OP_PARAM;
+        }
         return getCapitalCase(DEFAULT) + getCapitalCase(getJavaFileInfo().getJavaName());
     }
 
     /**
-     * Returns op param java class name.
-     *
-     * @return op param java class name
-     */
-    private String getOpParamImplClassName() {
-        return getCapitalCase(getJavaFileInfo().getJavaName()) + OPERATION;
-    }
-
-    /**
-     * Returns op param builder java class name.
-     *
-     * @return op param builder java class name
-     */
-    private String getOpParamBuilderImplClassName() {
-        return getCapitalCase(getJavaFileInfo().getJavaName()) + OPERATION + BUILDER;
-    }
-
-    /**
      * Returns the directory path.
      *
      * @return directory path
@@ -1487,15 +1507,11 @@
      */
     public void generateJavaFile(int fileType, YangNode curNode)
             throws IOException {
-
-        if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
-            addResolvedAugmentedDataNodeImports(curNode);
-        }
-        TempJavaBeanFragmentFiles tempJavaBeanFragmentFiles = ((JavaCodeGeneratorInfo) curNode)
-                .getTempJavaCodeFragmentFiles().getBeanTempFiles();
         List<String> imports = ((JavaCodeGeneratorInfo) curNode).getTempJavaCodeFragmentFiles().getBeanTempFiles()
                 .getJavaImportData().getImports();
-
+        if (curNode instanceof YangAugmentableNode) {
+            addImportsForAugmentableClass(imports, true, true);
+        }
         createPackage(curNode);
 
         /*
@@ -1510,45 +1526,48 @@
             setInterfaceJavaFileHandle(getJavaFileHandle(getJavaClassName(INTERFACE_FILE_NAME_SUFFIX)));
             setInterfaceJavaFileHandle(
                     generateInterfaceFile(getInterfaceJavaFileHandle(), imports, curNode, isAttributePresent()));
+            if (!(curNode instanceof YangModule) && !(curNode instanceof YangSubModule)) {
             /*
              * Create builder interface file.
              */
-            if ((fileType & BUILDER_INTERFACE_MASK) != 0) {
-                setBuilderInterfaceJavaFileHandle(
-                        getJavaFileHandle(getJavaClassName(BUILDER_INTERFACE_FILE_NAME_SUFFIX)));
-                setBuilderInterfaceJavaFileHandle(
-                        generateBuilderInterfaceFile(getBuilderInterfaceJavaFileHandle(), curNode,
-                                isAttributePresent()));
+                if ((fileType & BUILDER_INTERFACE_MASK) != 0) {
+                    setBuilderInterfaceJavaFileHandle(
+                            getJavaFileHandle(getJavaClassName(BUILDER_INTERFACE_FILE_NAME_SUFFIX)));
+                    setBuilderInterfaceJavaFileHandle(
+                            generateBuilderInterfaceFile(getBuilderInterfaceJavaFileHandle(), curNode,
+                                    isAttributePresent()));
                 /*
                  * Append builder interface file to interface file and close it.
                  */
-                mergeJavaFiles(getBuilderInterfaceJavaFileHandle(), getInterfaceJavaFileHandle());
-                validateLineLength(getInterfaceJavaFileHandle());
+                    mergeJavaFiles(getBuilderInterfaceJavaFileHandle(), getInterfaceJavaFileHandle());
+                    validateLineLength(getInterfaceJavaFileHandle());
+                }
             }
             insertDataIntoJavaFile(getInterfaceJavaFileHandle(), getJavaClassDefClose());
 
             if (curNode instanceof YangCase) {
                 removeCaseImport(imports);
             }
-
-            if (curNode instanceof YangAugment) {
-                removeAugmentedInfoImport(imports);
+            if (curNode instanceof YangAugmentableNode) {
+                addImportsForAugmentableClass(imports, false, true);
             }
         }
-        if ((fileType & BUILDER_CLASS_MASK) != 0 || (fileType & IMPL_CLASS_MASK) != 0) {
+        if ((fileType & BUILDER_CLASS_MASK) != 0 || (fileType & DEFAULT_CLASS_MASK) != 0) {
             if (isAttributePresent()) {
                 addImportsToStringAndHasCodeMethods(imports, true);
+                addArrayListImport(imports);
             }
+            addBitsetImport(imports);
             if (curNode instanceof YangAugmentableNode) {
-                addImportsForAugmentableClass(imports, true);
+                addImportsForAugmentableClass(imports, true, false);
             }
             sortImports(imports);
             /*
              * Create impl class file.
              */
-            setImplClassJavaFileHandle(getJavaFileHandle(getImplClassName()));
+            setImplClassJavaFileHandle(getJavaFileHandle(getImplClassName(curNode)));
             setImplClassJavaFileHandle(
-                    generateImplClassFile(getImplClassJavaFileHandle(), curNode, isAttributePresent(), imports));
+                    generateDefaultClassFile(getImplClassJavaFileHandle(), curNode, isAttributePresent(), imports));
 
             /*
              * Create builder class file.
@@ -1565,53 +1584,7 @@
                 validateLineLength(getImplClassJavaFileHandle());
             }
             insertDataIntoJavaFile(getImplClassJavaFileHandle(), getJavaClassDefClose());
-            if (curNode instanceof YangAugmentableNode) {
-                addImportsForAugmentableClass(imports, false);
-            }
-            if (!(curNode instanceof YangModule)) {
-                if (isAttributePresent()) {
-                    addImportsToStringAndHasCodeMethods(imports, false);
-                }
-                if (curNode instanceof YangAugmentableNode) {
-                    addYangAugmentedOpParamInfoImport(imports);
-                }
-                JavaQualifiedTypeInfoTranslator qualifiedTypeInfo = new JavaQualifiedTypeInfoTranslator();
-                qualifiedTypeInfo.setClassInfo(getCapitalCase(DEFAULT) + getCapitalCase(getJavaFileInfo()
-                        .getJavaName()));
-                qualifiedTypeInfo.setPkgInfo(getJavaFileInfo().getPackage());
-                getJavaExtendsListHolder().addToExtendsList(qualifiedTypeInfo, curNode,
-                        tempJavaBeanFragmentFiles);
-                addBitSetImport(imports, true);
-                if (curNode instanceof YangAugment) {
-                    addYangAugmentedOpParamInfoImport(imports);
-                }
-                /*
-                 * Create impl class file.
-                 */
-                setOpParamClassJavaFileHandle(getJavaFileHandle(getOpParamImplClassName()));
-                setOpParamClassJavaFileHandle(
-                        generateOpParamImplClassFile(getOpParamClassJavaFileHandle(), curNode,
-                                isAttributePresent(), imports));
 
-                /*
-                 * Create builder class file.
-                 */
-                if ((fileType & BUILDER_CLASS_MASK) != 0) {
-                    setBuilderOpParamClassJavaFileHandle(getJavaFileHandle(getOpParamBuilderImplClassName()));
-                    setBuilderOpParamClassJavaFileHandle(
-                            generateOpParamBuilderClassFile(getBuilderOpParamClassJavaFileHandle(), curNode,
-                                    isAttributePresent()));
-                    /*
-                     * Append impl class to builder class and close it.
-                     */
-                    mergeJavaFiles(getBuilderOpParamClassJavaFileHandle(), getOpParamClassJavaFileHandle());
-                    validateLineLength(getOpParamClassJavaFileHandle());
-
-                    addBitSetImport(imports, false);
-                }
-                insertDataIntoJavaFile(getOpParamClassJavaFileHandle(), getJavaClassDefClose());
-
-            }
         }
         /*
          * Close all the file handles.
@@ -1619,9 +1592,16 @@
         freeTemporaryResources(false);
     }
 
-    /*Adds import for YANG augmented op param info.*/
-    private void addYangAugmentedOpParamInfoImport(List<String> imports) {
-        imports.add(getJavaImportData().getYangAugmentedOpParamInfoImport());
+    /*Adds import for array list.*/
+    private void addArrayListImport(List<String> imports) {
+        if (imports.contains(getJavaImportData().getImportForList())) {
+            imports.add(ARRAY_LIST_IMPORT);
+        }
+    }
+
+    /*Adds import for bitset list.*/
+    private void addBitsetImport(List<String> imports) {
+        imports.add(getJavaImportData().getImportForToBitSet());
     }
 
     /**
@@ -1641,35 +1621,26 @@
     }
 
     /**
-     * Adds imports for bitSet method.
-     *
-     * @param imports   import list
-     * @param operation add or remove
-     */
-    private void addBitSetImport(List<String> imports, boolean operation) {
-        if (operation) {
-            imports.add(getJavaImportData().getImportForToBitSet());
-        } else {
-            imports.remove(getJavaImportData().getImportForToBitSet());
-        }
-    }
-
-
-    /**
      * Adds import for map and hash map.
      *
-     * @param imports    import list
-     * @param operations true for adding and false for deletion
+     * @param imports         import list
+     * @param operations      true for adding and false for deletion
+     * @param isInterfaceFile if need to add in interface file
      */
-    private void addImportsForAugmentableClass(List<String> imports, boolean operations) {
+    private void addImportsForAugmentableClass(List<String> imports, boolean operations, boolean isInterfaceFile) {
         if (operations) {
-            imports.add(getJavaImportData().getHashMapImport());
+            if (!isInterfaceFile) {
+                imports.add(getJavaImportData().getHashMapImport());
+            }
             imports.add(getJavaImportData().getMapImport());
-            imports.add(getJavaImportData().getYangAugmentedInfoImport());
+            addInvocationExceptionImport(imports);
         } else {
-            imports.remove(getJavaImportData().getHashMapImport());
+            if (!isInterfaceFile) {
+                imports.remove(getJavaImportData().getHashMapImport());
+            }
             imports.remove(getJavaImportData().getMapImport());
         }
+        sortImports(imports);
     }
 
     /**
@@ -1688,18 +1659,12 @@
     }
 
     /**
-     * Removes case import info from import list.
+     * Adds invocation exception import.
      *
      * @param imports list of imports
      */
-    private void removeAugmentedInfoImport(List<String> imports) {
-        imports.remove(getJavaImportData().getYangAugmentedInfoImport());
-        for (JavaQualifiedTypeInfoTranslator type : getJavaImportData().getImportSet()) {
-            if (type.getClassInfo().equals(YANG_AUGMENTED_INFO)) {
-                getJavaImportData().getImportSet().remove(type);
-                getJavaExtendsListHolder().getExtendsList().remove(type);
-            }
-        }
+    private void addInvocationExceptionImport(List<String> imports) {
+        imports.add(INVOCATION_TARGET_EXCEPTION_IMPORT);
     }
 
     /**
@@ -1719,13 +1684,10 @@
         if ((getGeneratedJavaFiles() & BUILDER_CLASS_MASK) != 0) {
             closeFile(getBuilderClassJavaFileHandle(), true);
         }
-        if ((getGeneratedJavaFiles() & OPERATION_BUILDER_CLASS_MASK) != 0) {
-            closeFile(getBuilderOpParamClassJavaFileHandle(), true);
-        }
         if ((getGeneratedJavaFiles() & BUILDER_INTERFACE_MASK) != 0) {
             closeFile(getBuilderInterfaceJavaFileHandle(), true);
         }
-        if ((getGeneratedJavaFiles() & IMPL_CLASS_MASK) != 0) {
+        if ((getGeneratedJavaFiles() & DEFAULT_CLASS_MASK) != 0) {
             closeFile(getImplClassJavaFileHandle(), isErrorOccurred);
         }
 
@@ -1750,6 +1712,15 @@
         if ((getGeneratedTempFiles() & FROM_STRING_IMPL_MASK) != 0) {
             closeFile(getFromStringImplTempFileHandle(), true);
         }
+        if ((getGeneratedTempFiles() & ADD_TO_LIST_IMPL_MASK) != 0) {
+            closeFile(getAddToListImplTempFileHandle(), true);
+        }
+        if ((getGeneratedTempFiles() & ADD_TO_LIST_INTERFACE_MASK) != 0) {
+            closeFile(getAddToListInterfaceTempFileHandle(), true);
+        }
+        if ((getGeneratedTempFiles() & LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK) != 0) {
+            closeFile(getLeafIdAttributeTempFileHandle(), true);
+        }
     }
 
     /**
@@ -1767,20 +1738,74 @@
     }
 
     /**
-     * Returns java file handle for op param class file.
+     * Returns temp file handle for add to list interface.
      *
-     * @return java file handle for op param class file
+     * @return temp file handle for add to list interface
      */
-    private File getOpParamClassJavaFileHandle() {
-        return opParamClassJavaFileHandle;
+    public File getAddToListInterfaceTempFileHandle() {
+        return addToListInterfaceTempFileHandle;
     }
 
     /**
-     * Sets the java file handle for op param class file.
+     * Sets temp file handle for add to list interface.
      *
-     * @param opParamClassJavaFileHandle java file handle
+     * @param addToListInterfaceTempFileHandle temp file handle for add to list interface
      */
-    private void setOpParamClassJavaFileHandle(File opParamClassJavaFileHandle) {
-        this.opParamClassJavaFileHandle = opParamClassJavaFileHandle;
+    private void setAddToListInterfaceTempFileHandle(File addToListInterfaceTempFileHandle) {
+        this.addToListInterfaceTempFileHandle = addToListInterfaceTempFileHandle;
+    }
+
+    /**
+     * Returns temp file handle for add to list impl.
+     *
+     * @return temp file handle for add to list impl
+     */
+    public File getAddToListImplTempFileHandle() {
+        return addToListImplTempFileHandle;
+    }
+
+    /**
+     * Sets temp file handle for add to list impl.
+     *
+     * @param addToListImplTempFileHandle temp file handle for add to list impl
+     */
+    private void setAddToListImplTempFileHandle(File addToListImplTempFileHandle) {
+        this.addToListImplTempFileHandle = addToListImplTempFileHandle;
+    }
+
+    /**
+     * Returns temp file handle for leaf identifier attributes.
+     *
+     * @return temp file handle for leaf identifier attributes
+     */
+    public File getLeafIdAttributeTempFileHandle() {
+        return leafIdAttributeTempFileHandle;
+    }
+
+    /**
+     * Sets temp file handle for leaf identifier attributes.
+     *
+     * @param leafIdAttributeTempFileHandle temp file handle for leaf identifier attributes.
+     */
+    private void setLeafIdAttributeTempFileHandle(File leafIdAttributeTempFileHandle) {
+        this.leafIdAttributeTempFileHandle = leafIdAttributeTempFileHandle;
+    }
+
+    /**
+     * Returns if root node is set.
+     *
+     * @return true if root node
+     */
+    private boolean isRooNode() {
+        return isRooNode;
+    }
+
+    /**
+     * Sets true if root node.
+     *
+     * @param rooNode true if root node
+     */
+    public void setRooNode(boolean rooNode) {
+        isRooNode = rooNode;
     }
 }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
index 98221f1..baa427f 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
@@ -22,23 +22,20 @@
 
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
+import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModuleTranslator;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaSubModuleTranslator;
 import org.onosproject.yangutils.translator.tojava.utils.JavaExtendsListHolder;
-import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.RPC_IMPL_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.RPC_INTERFACE_MASK;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.addAnnotationsImports;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.addListenersImport;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaClassDefClose;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateManagerClassFile;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateServiceInterfaceFile;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.addResolvedAugmentedDataNodeImports;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.createPackage;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getRpcManagerMethod;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getRpcServiceMethod;
 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
-import static org.onosproject.yangutils.utils.UtilConstants.LISTENER_REG;
 import static org.onosproject.yangutils.utils.UtilConstants.LISTENER_SERVICE;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
 import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
@@ -47,7 +44,6 @@
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateJavaDocForRpc;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getAbsolutePackagePath;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.insertDataIntoJavaFile;
 
 /**
  * Represents implementation of java service code fragments temporary implementations. Maintains the temp files required
@@ -72,16 +68,6 @@
     private static final String SERVICE_FILE_NAME_SUFFIX = "Service";
 
     /**
-     * File name for generated class file for manager suffix.
-     */
-    private static final String MANAGER_FILE_NAME_SUFFIX = "Manager";
-
-    /**
-     * Flag to set the manager files generation.
-     */
-    private boolean isManagerNeedToBeGenerated = false;
-
-    /**
      * Temporary file handle for rpc interface.
      */
     private File rpcInterfaceTempFileHandle;
@@ -97,16 +83,6 @@
     private File serviceInterfaceJavaFileHandle;
 
     /**
-     * Path for service file to be generated.
-     */
-    private String serviceGenPath;
-
-    /**
-     * Java file handle for manager impl file.
-     */
-    private File managerJavaFileHandle;
-
-    /**
      * Creates an instance of temporary java code fragment.
      *
      * @param javaFileInfo generated file information
@@ -117,8 +93,6 @@
         setJavaExtendsListHolder(new JavaExtendsListHolder());
         setJavaImportData(new JavaImportData());
         setJavaFileInfo(javaFileInfo);
-        setBaseCodePath(getJavaFileInfo().getBaseCodeGenPath());
-        setServiceGenPath(getJavaFileInfo().getPluginConfig().getCodeGenDir());
         setAbsoluteDirPath(getAbsolutePackagePath(getJavaFileInfo().getBaseCodeGenPath(),
                 getJavaFileInfo().getPackageFilePath()));
         addGeneratedTempFile(RPC_INTERFACE_MASK);
@@ -147,24 +121,6 @@
     }
 
     /**
-     * Returns managers java file handle.
-     *
-     * @return java file handle
-     */
-    private File getManagerJavaFileHandle() {
-        return managerJavaFileHandle;
-    }
-
-    /**
-     * Sets manager java file handle.
-     *
-     * @param managerJavaFileHandle file handle for to manager
-     */
-    private void setManagerJavaFileHandle(File managerJavaFileHandle) {
-        this.managerJavaFileHandle = managerJavaFileHandle;
-    }
-
-    /**
      * Returns rpc method's temporary file handle.
      *
      * @return temporary file handle
@@ -210,6 +166,8 @@
     @Override
     public void generateJavaFile(int fileType, YangNode curNode)
             throws IOException {
+
+        addResolvedAugmentedDataNodeImports(curNode);
         List<String> imports = ((JavaCodeGeneratorInfo) curNode).getTempJavaCodeFragmentFiles().getServiceTempFiles()
                 .getJavaImportData().getImports();
         createPackage(curNode);
@@ -228,28 +186,8 @@
             addListenersImport(curNode, imports, true, LISTENER_SERVICE);
         }
 
-        // Creates rpc interface file.
-        setBaseCodePath(getServiceGenPath());
         setServiceInterfaceJavaFileHandle(getJavaFileHandle(getJavaClassName(SERVICE_FILE_NAME_SUFFIX)));
         generateServiceInterfaceFile(getServiceInterfaceJavaFileHandle(), curNode, imports);
-        setBaseCodePath(getJavaFileInfo().getBaseCodeGenPath());
-        if (isNotification) {
-            addListenersImport(curNode, imports, false, LISTENER_SERVICE);
-            addListenersImport(curNode, imports, true, LISTENER_REG);
-        }
-        addAnnotationsImports(imports, true);
-
-        // Create builder class file.
-        if (isManagerNeedToBeGenerated()) {
-            setManagerJavaFileHandle(getJavaFileHandle(getJavaClassName(MANAGER_FILE_NAME_SUFFIX)));
-            generateManagerClassFile(getManagerJavaFileHandle(), imports, curNode);
-            insertDataIntoJavaFile(getManagerJavaFileHandle(), getJavaClassDefClose());
-        }
-        if (isNotification) {
-            addListenersImport(curNode, imports, false, LISTENER_REG);
-        }
-        addAnnotationsImports(imports, false);
-
 
         // Close all the file handles.
         freeTemporaryResources(false);
@@ -314,7 +252,6 @@
             throws IOException {
 
         closeFile(getServiceInterfaceJavaFileHandle(), isErrorOccurred);
-        closeFile(getManagerJavaFileHandle(), isErrorOccurred);
 
         closeFile(getRpcInterfaceTempFileHandle(), true);
         closeFile(getRpcImplTempFileHandle(), true);
@@ -325,41 +262,4 @@
         super.freeTemporaryResources(isErrorOccurred);
 
     }
-
-    /**
-     * Returns the path where service file should be generated.
-     *
-     * @return path where service file should be generated
-     */
-    private String getServiceGenPath() {
-        return serviceGenPath;
-    }
-
-    /**
-     * Sets path where service file should be generated.
-     *
-     * @param serviceGenPath path where service file should be generated
-     */
-    private void setServiceGenPath(String serviceGenPath) {
-        this.serviceGenPath = serviceGenPath;
-    }
-
-    /**
-     * Returns true if manager needs to be generated.
-     *
-     * @return true if manager needs to be generated
-     */
-    private boolean isManagerNeedToBeGenerated() {
-        return isManagerNeedToBeGenerated;
-    }
-
-    /**
-     * Sets true if manager needs to be generated.
-     *
-     * @param managerNeedToBeGenerated true if manager needs to be generated
-     */
-    public void setManagerNeedToBeGenerated(boolean managerNeedToBeGenerated) {
-        isManagerNeedToBeGenerated = managerNeedToBeGenerated;
-    }
-
 }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangDataModelFactory.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangDataModelFactory.java
index 77fb569..9af1352 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangDataModelFactory.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangDataModelFactory.java
@@ -36,16 +36,9 @@
 import org.onosproject.yangutils.datamodel.YangUses;
 import org.onosproject.yangutils.datamodel.utils.GeneratedLanguage;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaAugmentTranslator;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaCaseTranslator;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaChoiceTranslator;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaContainerTranslator;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaEnumerationTranslator;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaGroupingTranslator;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaIdentityTranslator;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaInputTranslator;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaLeafTranslator;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaLeafListTranslator;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaListTranslator;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModuleTranslator;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaNotificationTranslator;
@@ -56,6 +49,13 @@
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaTypeDefTranslator;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaUnionTranslator;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaUsesTranslator;
+import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaAugmentTranslator;
+import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaCaseTranslator;
+import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaGroupingTranslator;
+import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaIdentityTranslator;
+import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaInputTranslator;
+import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaLeafTranslator;
+import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaLeafListTranslator;
 
 /**
  * Represents factory to create data model objects based on the target file type.
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
index 7739e52..0826c80 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
@@ -16,18 +16,20 @@
 
 package org.onosproject.yangutils.translator.tojava;
 
-import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
 import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
+import org.onosproject.yangutils.datamodel.YangAtomicPath;
 import org.onosproject.yangutils.datamodel.YangAugment;
 import org.onosproject.yangutils.datamodel.YangCase;
 import org.onosproject.yangutils.datamodel.YangChoice;
 import org.onosproject.yangutils.datamodel.YangLeavesHolder;
+import org.onosproject.yangutils.datamodel.YangModule;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
+import org.onosproject.yangutils.datamodel.YangSubModule;
 import org.onosproject.yangutils.datamodel.YangTranslatorOperatorNode;
 import org.onosproject.yangutils.datamodel.YangTypeHolder;
 import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
@@ -44,13 +46,11 @@
 import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.addCurNodeInfoInParentTempFile;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
 import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
-import static org.onosproject.yangutils.utils.UtilConstants.MANAGER;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
-import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
-import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_CLASS_IMPORT_PKG;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPackageDirPathFromJavaJPackage;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
 
 /**
  * Represents utility class for YANG java model.
@@ -74,15 +74,36 @@
                                          YangPluginConfig yangPluginConfig)
             throws IOException {
         if (javaCodeGeneratorInfo instanceof YangJavaAugmentTranslator) {
-            javaCodeGeneratorInfo.getJavaFileInfo()
-                    .setJavaName(getAugmentClassName((YangJavaAugmentTranslator) javaCodeGeneratorInfo,
-                            yangPluginConfig));
+            updatePackageForAugmentInfo(javaCodeGeneratorInfo, yangPluginConfig);
         } else {
             javaCodeGeneratorInfo.getJavaFileInfo()
                     .setJavaName(getCamelCase(((YangNode) javaCodeGeneratorInfo).getName(),
                             yangPluginConfig.getConflictResolver()));
+            javaCodeGeneratorInfo.getJavaFileInfo().setPackage(getCurNodePackage((YangNode) javaCodeGeneratorInfo));
         }
-        javaCodeGeneratorInfo.getJavaFileInfo().setPackage(getCurNodePackage((YangNode) javaCodeGeneratorInfo));
+        javaCodeGeneratorInfo.getJavaFileInfo().setPackageFilePath(
+                getPackageDirPathFromJavaJPackage(javaCodeGeneratorInfo.getJavaFileInfo().getPackage()));
+
+        javaCodeGeneratorInfo.getJavaFileInfo().setBaseCodeGenPath(yangPluginConfig.getCodeGenDir());
+        javaCodeGeneratorInfo.getJavaFileInfo().setPluginConfig(yangPluginConfig);
+
+    }
+
+    /**
+     * Updates YANG java file package information.
+     *
+     * @param javaCodeGeneratorInfo YANG java file info node
+     * @param yangPluginConfig      YANG plugin config
+     * @throws IOException IO operations fails
+     */
+    private static void updatePackageForAugmentInfo(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
+                                                    YangPluginConfig yangPluginConfig)
+            throws IOException {
+        javaCodeGeneratorInfo.getJavaFileInfo()
+                .setJavaName(getAugmentClassName((YangJavaAugmentTranslator) javaCodeGeneratorInfo,
+                        yangPluginConfig));
+        javaCodeGeneratorInfo.getJavaFileInfo().setPackage(
+                getAugmentsNodePackage((YangNode) javaCodeGeneratorInfo, yangPluginConfig));
         javaCodeGeneratorInfo.getJavaFileInfo().setPackageFilePath(
                 getPackageDirPathFromJavaJPackage(javaCodeGeneratorInfo.getJavaFileInfo().getPackage()));
         javaCodeGeneratorInfo.getJavaFileInfo().setBaseCodeGenPath(yangPluginConfig.getCodeGenDir());
@@ -90,6 +111,28 @@
     }
 
     /**
+     * Returns package for augment node.
+     *
+     * @param yangNode         augment node
+     * @param yangPluginConfig plugin configurations
+     * @return package for augment node
+     */
+    private static String getAugmentsNodePackage(YangNode yangNode, YangPluginConfig yangPluginConfig) {
+        YangAugment augment = (YangAugment) yangNode;
+        StringBuilder augmentPkg = new StringBuilder();
+        augmentPkg.append(getCurNodePackage(augment));
+
+        String pkg = PERIOD;
+        for (YangAtomicPath atomicPath : augment.getTargetNode()) {
+            pkg = pkg + getCamelCase(atomicPath.getNodeIdentifier().getName(), yangPluginConfig.getConflictResolver())
+                    + PERIOD;
+        }
+        pkg = trimAtLast(pkg, PERIOD);
+        augmentPkg.append(pkg.toLowerCase());
+        return augmentPkg.toString();
+    }
+
+    /**
      * Updates YANG java file package information for specified package.
      *
      * @param javaCodeGeneratorInfo YANG java file info node
@@ -104,7 +147,7 @@
         javaCodeGeneratorInfo.getJavaFileInfo().setPackage(pkg);
         javaCodeGeneratorInfo.getJavaFileInfo().setPackageFilePath(
                 getPackageDirPathFromJavaJPackage(javaCodeGeneratorInfo.getJavaFileInfo().getPackage()));
-        javaCodeGeneratorInfo.getJavaFileInfo().setBaseCodeGenPath(yangPlugin.getManagerCodeGenDir());
+        javaCodeGeneratorInfo.getJavaFileInfo().setBaseCodeGenPath(yangPlugin.getCodeGenDir());
         javaCodeGeneratorInfo.getJavaFileInfo().setPluginConfig(yangPlugin);
     }
 
@@ -129,6 +172,12 @@
     private static void updateTempFragmentFiles(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
                                                 YangPluginConfig yangPluginConfig)
             throws IOException {
+
+        if (javaCodeGeneratorInfo instanceof YangModule
+                || javaCodeGeneratorInfo instanceof YangSubModule) {
+            javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles().setRooNode(true);
+        }
+
         if (javaCodeGeneratorInfo instanceof RpcNotificationContainer) {
             /*
              * Module / sub module node code generation.
@@ -268,20 +317,23 @@
 
         generateCodeOfNode(javaCodeGeneratorInfo, yangPlugin);
         TempJavaCodeFragmentFiles tempJavaCodeFragmentFiles = javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles();
-        if (javaCodeGeneratorInfo instanceof YangJavaAugmentTranslator) {
 
-            JavaQualifiedTypeInfoTranslator yangAugmentedInfo = new JavaQualifiedTypeInfoTranslator();
-            yangAugmentedInfo.setClassInfo(YANG_AUGMENTED_INFO);
-            yangAugmentedInfo.setPkgInfo(YANG_AUGMENTED_INFO_CLASS_IMPORT_PKG);
-            javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles().getJavaExtendsListHolder()
-                    .addToExtendsList(yangAugmentedInfo, (YangNode) javaCodeGeneratorInfo,
-                            tempJavaCodeFragmentFiles.getBeanTempFiles());
-        }
         if (javaCodeGeneratorInfo instanceof YangCase) {
             YangNode parent = ((YangCase) javaCodeGeneratorInfo).getParent();
+            if (parent instanceof YangAugment) {
+                parent = ((YangAugment) parent).getAugmentedNode();
+            }
             JavaQualifiedTypeInfoTranslator parentsInfo = new JavaQualifiedTypeInfoTranslator();
-            String parentName = getCapitalCase(((JavaFileInfoContainer) parent).getJavaFileInfo().getJavaName());
-            String parentPkg = ((JavaFileInfoContainer) parent).getJavaFileInfo().getPackage();
+            JavaFileInfo parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
+            String parentName;
+            String parentPkg;
+            if (parentInfo.getPackage() != null) {
+                parentName = getCapitalCase(((JavaFileInfoContainer) parent).getJavaFileInfo().getJavaName());
+                parentPkg = ((JavaFileInfoContainer) parent).getJavaFileInfo().getPackage();
+            } else {
+                parentName = getCapitalCase(getCamelCase(parent.getName(), yangPlugin.getConflictResolver()));
+                parentPkg = getNodesPackage(parent, yangPlugin);
+            }
             parentsInfo.setClassInfo(parentName);
             parentsInfo.setPkgInfo(parentPkg);
             javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles().getJavaExtendsListHolder()
@@ -363,17 +415,18 @@
      * @param node root YANG node
      * @return true if root node contains any data node
      */
-    public static boolean isManagerCodeGenRequired(YangNode node) {
+    public static boolean isRootNodesCodeGenRequired(YangNode node) {
 
         List<YangNode> childNodes = new ArrayList<>();
-        node = node.getChild();
-        while (node != null) {
-            childNodes.add(node);
-            node = node.getNextSibling();
+        YangNode tempNode = node.getChild();
+        while (tempNode != null) {
+            childNodes.add(tempNode);
+            tempNode = tempNode.getNextSibling();
         }
 
         if (childNodes.size() == 0) {
-            return false;
+            YangLeavesHolder leavesHolder = (YangLeavesHolder) node;
+            return !leavesHolder.getListOfLeaf().isEmpty() || !leavesHolder.getListOfLeafList().isEmpty();
         } else if (childNodes.size() == 1) {
             return !(childNodes.get(0) instanceof YangTranslatorOperatorNode);
         }
@@ -389,33 +442,13 @@
     }
 
     /**
-     * Return false if files are already present.
+     * Returns nodes package.
      *
-     * @param info java file info
-     * @return false if files already present
-     */
-    public static boolean isGenerationOfCodeReq(JavaFileInfo info) {
-        File codeGenDir = new File(info.getBaseCodeGenPath()
-                + info.getPackageFilePath());
-        File[] files = codeGenDir.listFiles();
-        if (files != null && files.length >= 1) {
-            for (File file : files) {
-                if (file.getName().contentEquals(getCapitalCase(info.getJavaName() + MANAGER + ".java"))) {
-                    return false;
-                }
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Returns augmented nodes package.
-     *
-     * @param node             augmented node
+     * @param node             YANG node
      * @param yangPluginConfig plugin config
      * @return java package
      */
-    public static String getAugmentedNodesPackage(YangNode node, YangPluginConfig yangPluginConfig) {
+    public static String getNodesPackage(YangNode node, YangPluginConfig yangPluginConfig) {
 
         List<String> clsInfo = new ArrayList<>();
         while (node.getParent() != null) {
@@ -424,7 +457,6 @@
             } else {
                 clsInfo.add(getCamelCase(node.getName(), yangPluginConfig.getConflictResolver()));
             }
-
             node = node.getParent();
         }
 
@@ -434,10 +466,10 @@
             pkg.append(getRootPackage(module.getVersion(), module.getNameSpace().getUri(), module
                     .getRevision().getRevDate(), yangPluginConfig.getConflictResolver()));
         } else if (node instanceof YangJavaSubModuleTranslator) {
-            YangJavaSubModuleTranslator submodule = (YangJavaSubModuleTranslator) node;
-            pkg.append(getRootPackage(submodule.getVersion(),
-                    submodule.getNameSpaceFromModule(submodule.getBelongsTo()),
-                    submodule.getRevision().getRevDate(), yangPluginConfig.getConflictResolver()));
+            YangJavaSubModuleTranslator subModule = (YangJavaSubModuleTranslator) node;
+            pkg.append(getRootPackage(subModule.getVersion(),
+                    subModule.getNameSpaceFromModule(subModule.getBelongsTo()),
+                    subModule.getRevision().getRevDate(), yangPluginConfig.getConflictResolver()));
         }
         String concat = "";
         for (int i = 1; i <= clsInfo.size(); i++) {
@@ -456,12 +488,15 @@
      * @return augment class name
      */
     public static String getAugmentClassName(YangAugment augment, YangPluginConfig yangPluginConfig) {
-        YangNodeIdentifier nodeId = augment.getTargetNode().get(augment.getTargetNode().size() - 1).getNodeIdentifier();
-        String name = getCapitalCase(getCamelCase(nodeId.getName(), yangPluginConfig.getConflictResolver()));
-        if (nodeId.getPrefix() != null) {
-            return AUGMENTED + getCapitalCase(nodeId.getPrefix()) + name;
+        YangNodeIdentifier yangNodeIdentifier = augment.getTargetNode().get(augment.getTargetNode().size() - 1)
+                .getNodeIdentifier();
+        String name = getCapitalCase(getCamelCase(yangNodeIdentifier.getName(), yangPluginConfig
+                .getConflictResolver()));
+        if (yangNodeIdentifier.getPrefix() != null) {
+            return AUGMENTED + getCapitalCase(yangNodeIdentifier.getPrefix()) + name;
         } else {
             return AUGMENTED + name;
         }
     }
+
 }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/AttributesJavaDataType.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/AttributesJavaDataType.java
index 4c29785..ef2ca3d 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/AttributesJavaDataType.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/AttributesJavaDataType.java
@@ -262,7 +262,7 @@
                 case INSTANCE_IDENTIFIER:
                     return JAVA_LANG;
                 case DERIVED:
-                    return getTypDefsPackage(yangType, conflictResolver);
+                    return getTypeDefsPackage(yangType, conflictResolver);
                 default:
                     throw new TranslatorException("given data type is not supported.");
             }
@@ -288,7 +288,7 @@
                 case INSTANCE_IDENTIFIER:
                     return JAVA_LANG;
                 case DERIVED:
-                    return getTypDefsPackage(yangType, conflictResolver);
+                    return getTypeDefsPackage(yangType, conflictResolver);
                 default:
                     return null;
             }
@@ -302,7 +302,7 @@
      * @param conflictResolver object of YANG to java naming conflict util
      * @return java package for typedef node
      */
-    private static String getTypDefsPackage(YangType<?> type, YangToJavaNamingConflictUtil conflictResolver) {
+    private static String getTypeDefsPackage(YangType<?> type, YangToJavaNamingConflictUtil conflictResolver) {
         Object var = type.getDataTypeExtendedInfo();
         if (!(var instanceof YangDerivedInfo)) {
             throw new TranslatorException("type should have been derived.");
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java
index 809323c..c164827 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java
@@ -16,8 +16,8 @@
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
 import org.onosproject.yangutils.datamodel.YangType;
-import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoContainer;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangToJavaNamingConflictUtil;
+import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoContainer;
 
 /**
  * Represent java based identification of the YANG leaves.
@@ -25,21 +25,21 @@
 public interface JavaLeafInfoContainer
         extends JavaQualifiedTypeInfoContainer {
     /**
-     * Retreives the data type of the leaf.
+     * Retrieves the data type of the leaf.
      *
      * @return data type of the leaf
      */
     YangType<?> getDataType();
 
     /**
-     * Retreives the name of the leaf.
+     * Retrieves the name of the leaf.
      *
      * @return name of the leaf
      */
     String getName();
 
     /**
-     * Retreives the java name of the leaf.
+     * Retrieves the java name of the leaf.
      *
      * @param conflictResolveConfig user config to resolve conflicts
      * @return name of the leaf
@@ -61,14 +61,14 @@
     /**
      * Returns java naming conflict resolver.
      *
-     * @return  java naming conflict resolver
+     * @return java naming conflict resolver
      */
     YangToJavaNamingConflictUtil getConflictResolveConfig();
 
     /**
      * Sets  java naming conflict resolver.
      *
-     * @param conflictResolveConfig  java naming conflict resolver
+     * @param conflictResolveConfig java naming conflict resolver
      */
     void setConflictResolveConfig(YangToJavaNamingConflictUtil conflictResolveConfig);
 
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java
index f5fd32e..95fb9bb 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java
@@ -21,7 +21,7 @@
 /**
  * Represent java based identification of the YANG leaves.
  */
-public interface JavaQualifiedTypeResolver
+interface JavaQualifiedTypeResolver
         extends JavaQualifiedTypeInfoContainer {
 
     /**
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugmentTranslator.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugmentTranslator.java
index 4ed340d..04caec5 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugmentTranslator.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugmentTranslator.java
@@ -17,6 +17,7 @@
 
 import java.io.IOException;
 
+import org.onosproject.yangutils.datamodel.YangChoice;
 import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaAugment;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
@@ -118,10 +119,21 @@
     @Override
     public void generateCodeExit() throws TranslatorException {
         try {
-            getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
+            if (validateAugmentNode()) {
+                getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
+            }
         } catch (IOException e) {
             throw new TranslatorException("Failed to generate code for augmentable node " + getName());
         }
     }
 
+    /**
+     * Returns true if augment does not have choice as target node.
+     *
+     * @return true if augment does not have choice as target node
+     */
+    private boolean validateAugmentNode() {
+        return !(getAugmentedNode() instanceof YangChoice);
+    }
+
 }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaCaseTranslator.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaCaseTranslator.java
index 5323ee5..4e73389 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaCaseTranslator.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaCaseTranslator.java
@@ -123,4 +123,5 @@
             throw new TranslatorException("Failed to generate code for case node " + getName());
         }
     }
+
 }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGroupingTranslator.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGroupingTranslator.java
index a953b63..90ff371 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGroupingTranslator.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGroupingTranslator.java
@@ -20,8 +20,8 @@
 import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 import org.onosproject.yangutils.translator.exception.InvalidNodeForTranslatorException;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
-import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
 
 /**
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentityTranslator.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentityTranslator.java
index 22f95fa..f3a4ce2 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentityTranslator.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentityTranslator.java
@@ -47,7 +47,7 @@
     //File type extension for java classes.
     private static final String JAVA_FILE_EXTENSION = ".java";
 
-    //Contains the information of the importd.
+    //Contains the information of the imported.
     private transient JavaImportData importData;
 
     /**
@@ -118,6 +118,7 @@
     @Override
     public void generateCodeEntry(YangPluginConfig yangPlugin) throws TranslatorException {
         try {
+
             updatePackageInfo(this, yangPlugin);
             JavaQualifiedTypeInfoTranslator basePkgInfo = new JavaQualifiedTypeInfoTranslator();
             String className = getCapitalCase(getJavaFileInfo().getJavaName());
@@ -142,7 +143,7 @@
                 }
             }
 
-            File file = getFileObject(path, className, JAVA_FILE_EXTENSION, getJavaFileInfo().getBaseCodeGenPath());
+            File file = getFileObject(path, className, JAVA_FILE_EXTENSION, getJavaFileInfo());
 
             initiateJavaFileGeneration(file, GENERATE_IDENTITY_CLASS, imports, this, className);
             closeFile(file, false);
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java
index 06715b1..b185588 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java
@@ -33,8 +33,7 @@
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
 import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeOfRootNode;
-import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.isGenerationOfCodeReq;
-import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.isManagerCodeGenRequired;
+import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.isRootNodesCodeGenRequired;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
 import static org.onosproject.yangutils.utils.UtilConstants.SBI;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.searchAndDeleteTempDir;
@@ -140,7 +139,7 @@
      */
     @Override
     public void generateCodeExit() throws TranslatorException {
-        /**
+        /*
          * As part of the notification support the following files needs to be generated.
          * 1) Subject of the notification(event), this is simple interface with builder class.
          * 2) Event class extending "AbstractEvent" and defining event type enum.
@@ -153,17 +152,15 @@
             if ((getJavaFileInfo().getGeneratedFileTypes() & GENERATE_ALL_EVENT_CLASS_MASK) != 0) {
                 getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_ALL_EVENT_CLASS_MASK, this);
             }
-            getTempJavaCodeFragmentFiles()
-                    .generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
-            if (isManagerCodeGenRequired(this)) {
-                if (isGenerationOfCodeReq(getJavaFileInfo())) {
-                    if ((getJavaFileInfo().getPluginConfig().getCodeGenerateForsbi() == null)
-                            || (!getJavaFileInfo().getPluginConfig().getCodeGenerateForsbi().equals(SBI))) {
-                        getTempJavaCodeFragmentFiles().getServiceTempFiles().setManagerNeedToBeGenerated(true);
-                    }
+
+            if (isRootNodesCodeGenRequired(this)) {
+                getTempJavaCodeFragmentFiles()
+                        .generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
+                if ((getJavaFileInfo().getPluginConfig().getCodeGenerateForsbi() == null)
+                        || (!getJavaFileInfo().getPluginConfig().getCodeGenerateForsbi().equals(SBI))) {
+                    getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_SERVICE_AND_MANAGER, this);
                 }
             }
-            getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_SERVICE_AND_MANAGER, this);
 
             searchAndDeleteTempDir(getJavaFileInfo().getBaseCodeGenPath() +
                     getJavaFileInfo().getPackageFilePath());
@@ -197,22 +194,22 @@
      *
      * @param curNode notification node
      */
-    private void addToNotificaitonList(YangNode curNode) {
+    private void addToNotificationList(YangNode curNode) {
         getNotificationNodes().add(curNode);
     }
 
     /**
-     * Checks if there is any rpc defined in the module or sub-module.
+     * Checks if there is any notification node present.
      *
      * @param rootNode root node of the data model
-     * @return status of rpc's existence
+     * @return status of notification's existence
      */
     private boolean isNotificationChildNodePresent(YangNode rootNode) {
         YangNode childNode = rootNode.getChild();
 
         while (childNode != null) {
             if (childNode instanceof YangNotification) {
-                addToNotificaitonList(childNode);
+                addToNotificationList(childNode);
             }
             childNode = childNode.getNextSibling();
         }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java
index a693820..5b62021 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java
@@ -116,7 +116,7 @@
     @Override
     public void generateCodeEntry(YangPluginConfig yangPlugin) throws TranslatorException {
 
-        /**
+        /*
          * As part of the notification support the following files needs to be generated.
          * 1) Subject of the notification(event), this is simple interface with builder class.
          * 2) Event class extending "AbstractEvent" and defining event type enum.
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpcTranslator.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpcTranslator.java
index 7696418..2b768e2 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpcTranslator.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpcTranslator.java
@@ -23,28 +23,22 @@
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangOutput;
 import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
+import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaRpc;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
-import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
-import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
 import org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles;
 
+import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator.getQualifiedTypeInfoOfCurNode;
 import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.getParentNodeInGenCode;
 import static org.onosproject.yangutils.translator.tojava.JavaAttributeInfo.getAttributeInfoForTheData;
-import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator.getQualifiedTypeInfoOfCurNode;
 import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.updatePackageInfo;
-import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE;
-import static org.onosproject.yangutils.utils.UtilConstants.COMPONENT;
-import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE;
-import static org.onosproject.yangutils.utils.UtilConstants.MANAGER;
-import static org.onosproject.yangutils.utils.UtilConstants.REFERENCE;
-import static org.onosproject.yangutils.utils.UtilConstants.REFERENCE_CARDINALITY;
 import static org.onosproject.yangutils.utils.UtilConstants.SERVICE;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
 
@@ -58,7 +52,7 @@
     private static final long serialVersionUID = 806201622L;
 
     /**
-     * Temproary file for code generation.
+     * Temporary file for code generation.
      */
     private transient TempJavaCodeFragmentFiles tempJavaCodeFragmentFiles;
 
@@ -191,7 +185,7 @@
      * @return AttributeInfo attribute details required to add in temporary
      * files
      */
-    public JavaAttributeInfo getChildNodeAsAttributeInParentService(
+    private JavaAttributeInfo getChildNodeAsAttributeInParentService(
             YangNode childNode, YangNode currentNode) {
 
         YangNode parentNode = getParentNodeInGenCode(currentNode);
@@ -229,13 +223,7 @@
         JavaFileInfo fileInfo = ((JavaFileInfoContainer) getParent()).getJavaFileInfo();
 
         if (importInfo.getClassInfo().contentEquals(SERVICE)
-                || importInfo.getClassInfo().contentEquals(COMPONENT)
-                || importInfo.getClassInfo().contentEquals(getCapitalCase(ACTIVATE))
-                || importInfo.getClassInfo().contentEquals(getCapitalCase(DEACTIVATE))
-                || importInfo.getClassInfo().contentEquals(REFERENCE_CARDINALITY)
-                || importInfo.getClassInfo().contentEquals(REFERENCE)
-                || importInfo.getClassInfo().contentEquals(getCapitalCase(fileInfo.getJavaName() + SERVICE))
-                || importInfo.getClassInfo().contentEquals(getCapitalCase(fileInfo.getJavaName() + MANAGER))) {
+                || importInfo.getClassInfo().contentEquals(getCapitalCase(fileInfo.getJavaName() + SERVICE))) {
             return true;
         }
 
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModuleTranslator.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModuleTranslator.java
index a089a99..10aab93 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModuleTranslator.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModuleTranslator.java
@@ -35,8 +35,7 @@
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
 import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeOfRootNode;
-import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.isGenerationOfCodeReq;
-import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.isManagerCodeGenRequired;
+import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.isRootNodesCodeGenRequired;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
 import static org.onosproject.yangutils.utils.UtilConstants.SBI;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.searchAndDeleteTempDir;
@@ -66,11 +65,11 @@
     public YangJavaSubModuleTranslator() {
         super();
         setJavaFileInfo(new JavaFileInfo());
-        int gentype = GENERATE_SERVICE_AND_MANAGER | GENERATE_INTERFACE_WITH_BUILDER;
+        int genType = GENERATE_SERVICE_AND_MANAGER | GENERATE_INTERFACE_WITH_BUILDER;
         if (isNotificationChildNodePresent(this)) {
-            gentype = GENERATE_SERVICE_AND_MANAGER | GENERATE_ALL_EVENT_CLASS_MASK;
+            genType = GENERATE_SERVICE_AND_MANAGER | GENERATE_ALL_EVENT_CLASS_MASK;
         }
-        getJavaFileInfo().setGeneratedFileTypes(gentype);
+        getJavaFileInfo().setGeneratedFileTypes(genType);
     }
 
     /**
@@ -168,17 +167,14 @@
             if ((getJavaFileInfo().getGeneratedFileTypes() & GENERATE_ALL_EVENT_CLASS_MASK) != 0) {
                 getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_ALL_EVENT_CLASS_MASK, this);
             }
-            getTempJavaCodeFragmentFiles()
-                    .generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
-            if (isManagerCodeGenRequired(this)) {
-                if (isGenerationOfCodeReq(getJavaFileInfo())) {
-                    if ((getJavaFileInfo().getPluginConfig().getCodeGenerateForsbi() == null)
-                            || (!getJavaFileInfo().getPluginConfig().getCodeGenerateForsbi().equals(SBI))) {
-                        getTempJavaCodeFragmentFiles().getServiceTempFiles().setManagerNeedToBeGenerated(true);
-                    }
+            if (isRootNodesCodeGenRequired(this)) {
+                getTempJavaCodeFragmentFiles()
+                        .generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
+                if ((getJavaFileInfo().getPluginConfig().getCodeGenerateForsbi() == null)
+                        || (!getJavaFileInfo().getPluginConfig().getCodeGenerateForsbi().equals(SBI))) {
+                    getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_SERVICE_AND_MANAGER, this);
                 }
             }
-            getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_SERVICE_AND_MANAGER, this);
 
             searchAndDeleteTempDir(getJavaFileInfo().getBaseCodeGenPath() +
                     getJavaFileInfo().getPackageFilePath());
@@ -203,22 +199,22 @@
      *
      * @param curNode notification node
      */
-    private void addToNotificaitonList(YangNode curNode) {
+    private void addToNotificationList(YangNode curNode) {
         getNotificationNodes().add(curNode);
     }
 
     /**
-     * Checks if there is any rpc defined in the module or sub-module.
+     * Checks if there is any notification node present.
      *
      * @param rootNode root node of the data model
-     * @return status of rpc's existence
+     * @return status of notification's existence
      */
     private boolean isNotificationChildNodePresent(YangNode rootNode) {
         YangNode childNode = rootNode.getChild();
 
         while (childNode != null) {
             if (childNode instanceof YangNotification) {
-                addToNotificaitonList(childNode);
+                addToNotificationList(childNode);
             }
             childNode = childNode.getNextSibling();
         }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDefTranslator.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDefTranslator.java
index 998cc0f..c742e7c 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDefTranslator.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDefTranslator.java
@@ -16,18 +16,20 @@
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
 import java.io.IOException;
+
 import org.onosproject.yangutils.datamodel.YangDerivedInfo;
 import org.onosproject.yangutils.datamodel.YangType;
 import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaTypeDef;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
-import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
 import org.onosproject.yangutils.translator.exception.InvalidNodeForTranslatorException;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
 
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DERIVED;
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.LEAFREF;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
 import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeOfNode;
 
@@ -109,12 +111,12 @@
     @Override
     public void generateCodeEntry(YangPluginConfig yangPlugin) throws TranslatorException {
         YangType typeInTypeDef = this.getTypeDefBaseType();
-        if (typeInTypeDef.getDataType() == YangDataTypes.DERIVED) {
+        if (typeInTypeDef.getDataType() == DERIVED) {
             YangDerivedInfo derivedInfo = (YangDerivedInfo) typeInTypeDef.getDataTypeExtendedInfo();
-            if (derivedInfo.getEffectiveBuiltInType() == YangDataTypes.LEAFREF) {
+            if (derivedInfo.getEffectiveBuiltInType() == LEAFREF) {
                 throw new InvalidNodeForTranslatorException();
             }
-        } else if (typeInTypeDef.getDataType() == YangDataTypes.LEAFREF) {
+        } else if (typeInTypeDef.getDataType() == LEAFREF) {
             throw new InvalidNodeForTranslatorException();
         }
         try {
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeTranslator.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeTranslator.java
index d8fe517..5e8321d 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeTranslator.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeTranslator.java
@@ -16,10 +16,13 @@
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
 import org.onosproject.yangutils.datamodel.YangType;
-import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfo;
-import org.onosproject.yangutils.datamodel.javadatamodel.YangToJavaNamingConflictUtil;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
+import org.onosproject.yangutils.datamodel.javadatamodel.YangToJavaNamingConflictUtil;
+
+import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaDataType;
+import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaImportClass;
+import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaImportPackage;
 
 /**
  * Represents java information corresponding to the YANG type.
@@ -30,7 +33,7 @@
         extends YangType<T>
         implements JavaQualifiedTypeResolver {
 
-    private JavaQualifiedTypeInfo javaQualifiedAccess;
+    private JavaQualifiedTypeInfoTranslator javaQualifiedAccess;
 
     /**
      * Create a YANG leaf object with java qualified access details.
@@ -47,15 +50,15 @@
         /*
          * Type is added as an attribute in the class.
          */
-        String className = AttributesJavaDataType.getJavaImportClass(this, false, conflictResolver);
+        String className = getJavaImportClass(this, false, conflictResolver);
         if (className != null) {
             /*
              * Corresponding to the attribute type a class needs to be imported,
              * since it can be a derived type or a usage of wrapper classes.
              */
             importInfo.setClassInfo(className);
-            String classPkg = AttributesJavaDataType.getJavaImportPackage(this,
-                    false, conflictResolver);
+            String classPkg = getJavaImportPackage(this,
+                    false,  conflictResolver);
             if (classPkg == null) {
                 throw new TranslatorException("import package cannot be null when the class is used");
             }
@@ -65,7 +68,7 @@
              * The attribute does not need a class to be imported, for example
              * built in java types.
              */
-            String dataTypeName = AttributesJavaDataType.getJavaDataType(this);
+            String dataTypeName = getJavaDataType(this);
             if (dataTypeName == null) {
                 throw new TranslatorException("not supported data type");
             }
@@ -76,7 +79,7 @@
 
     @Override
     public JavaQualifiedTypeInfoTranslator getJavaQualifiedInfo() {
-        return (JavaQualifiedTypeInfoTranslator) javaQualifiedAccess;
+        return javaQualifiedAccess;
     }
 
     @Override
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUsesTranslator.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUsesTranslator.java
index 4717a15..a3af41e 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUsesTranslator.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUsesTranslator.java
@@ -20,8 +20,8 @@
 import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 import org.onosproject.yangutils.translator.exception.InvalidNodeForTranslatorException;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
-import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
 
 /**
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
index a4109c5..2b52cc9 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
@@ -19,16 +19,19 @@
 import org.onosproject.yangutils.datamodel.YangAugment;
 import org.onosproject.yangutils.datamodel.YangCase;
 import org.onosproject.yangutils.datamodel.YangIdentity;
+import org.onosproject.yangutils.datamodel.YangModule;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangNotification;
-import org.onosproject.yangutils.translator.exception.TranslatorException;
+import org.onosproject.yangutils.datamodel.YangSubModule;
 import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
+import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.DEFAULT_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
@@ -37,10 +40,7 @@
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.IMPL_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.INTERFACE_MASK;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.OPERATION_BUILDER_CLASS_MASK;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.OPERATION_CLASS_MASK;
 import static org.onosproject.yangutils.utils.UtilConstants.ABSTRACT;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
 import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
@@ -61,21 +61,21 @@
 import static org.onosproject.yangutils.utils.UtilConstants.MANAGER;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
 import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
-import static org.onosproject.yangutils.utils.UtilConstants.OPERATION;
+import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
 import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
 import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_ANY_STRING_ENDING_WITH_SERVICE;
 import static org.onosproject.yangutils.utils.UtilConstants.SERVICE;
 import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
+import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
 import static org.onosproject.yangutils.utils.UtilConstants.SUBJECT;
-import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_OP_PARAM_INFO;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
 
 /**
  * Represents generator for class definition of generated files.
  */
-public final class ClassDefinitionGenerator {
+final class ClassDefinitionGenerator {
 
     /**
      * Creates an instance of class definition generator.
@@ -90,9 +90,9 @@
      * @param yangName     class name
      * @return class definition
      */
-    public static String generateClassDefinition(int genFileTypes, String yangName) {
+    static String generateClassDefinition(int genFileTypes, String yangName) {
 
-        /**
+        /*
          * Based on the file type and the YANG name of the file, generate the
          * class / interface definition start.
          */
@@ -115,9 +115,9 @@
      * @param curNode      current YANG node
      * @return class definition
      */
-    public static String generateClassDefinition(int genFileTypes, String yangName, YangNode curNode) {
+    static String generateClassDefinition(int genFileTypes, String yangName, YangNode curNode) {
 
-        /**
+        /*
          * Based on the file type and the YANG name of the file, generate the
          * class / interface definition start.
          */
@@ -126,12 +126,8 @@
                 return getInterfaceDefinition(yangName, curNode);
             case BUILDER_CLASS_MASK:
                 return getBuilderClassDefinition(yangName, curNode);
-            case OPERATION_BUILDER_CLASS_MASK:
-                return getOpParamBuilderClassDefinition(yangName, curNode);
-            case IMPL_CLASS_MASK:
+            case DEFAULT_CLASS_MASK:
                 return getImplClassDefinition(yangName, curNode);
-            case OPERATION_CLASS_MASK:
-                return getOpPramImplClassDefinition(yangName, curNode);
             case BUILDER_INTERFACE_MASK:
                 return getBuilderInterfaceDefinition(yangName, curNode);
             case GENERATE_SERVICE_AND_MANAGER:
@@ -204,27 +200,12 @@
                 return clsDef;
             }
         }
-        return PUBLIC + SPACE + CLASS + SPACE + yangName + BUILDER + SPACE + IMPLEMENTS + SPACE + yangName + PERIOD
-                + yangName + BUILDER + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
-    }
-
-    /**
-     * Returns operation param builder file class definition.
-     *
-     * @param yangName class name
-     * @param curNode  YANG node
-     * @return definition returns operation param builder file class definition
-     */
-    private static String getOpParamBuilderClassDefinition(String yangName, YangNode curNode) {
-        if (!(curNode instanceof YangCase)) {
-            String clsDef = getClassDefinitionForWhenExtended(curNode, yangName, OPERATION_BUILDER_CLASS_MASK);
-            if (clsDef != null) {
-                return clsDef + OPEN_CURLY_BRACKET + NEW_LINE;
-            }
+        if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
+            return PUBLIC + SPACE + STATIC + SPACE + CLASS + SPACE + yangName + BUILDER + SPACE
+                    + OPEN_CURLY_BRACKET + NEW_LINE;
         }
-        return PUBLIC + SPACE + CLASS + SPACE + yangName + OPERATION + BUILDER + SPACE + EXTEND +
-                SPACE + getCapitalCase(DEFAULT) + yangName + PERIOD + yangName + BUILDER + SPACE +
-                OPEN_CURLY_BRACKET + NEW_LINE;
+        return PUBLIC + SPACE + STATIC + SPACE + CLASS + SPACE + yangName + BUILDER + SPACE + IMPLEMENTS + SPACE +
+                yangName + PERIOD + yangName + BUILDER + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
     }
 
     /**
@@ -235,42 +216,20 @@
      */
     private static String getImplClassDefinition(String yangName, YangNode curNode) {
         if (!(curNode instanceof YangCase)) {
-            String clsDef = getClassDefinitionForWhenExtended(curNode, yangName, IMPL_CLASS_MASK);
+            String clsDef = getClassDefinitionForWhenExtended(curNode, yangName, DEFAULT_CLASS_MASK);
             if (clsDef != null) {
                 return clsDef;
             }
         }
+        if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
+            return PUBLIC + SPACE + CLASS + SPACE + yangName + OP_PARAM + SPACE + IMPLEMENTS + SPACE
+                    + yangName + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+        }
         return PUBLIC + SPACE + CLASS + SPACE + getCapitalCase(DEFAULT) + yangName + SPACE + IMPLEMENTS + SPACE
                 + yangName + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
     }
 
     /**
-     * Returns operation param file class definition.
-     *
-     * @param yangName class name
-     * @param curNode  YANG node
-     * @return definition returns operation param file class definition
-     */
-    private static String getOpPramImplClassDefinition(String yangName, YangNode curNode) {
-        String clsDef = "";
-        if (!(curNode instanceof YangCase)) {
-            clsDef = getClassDefinitionForWhenExtended(curNode, yangName, OPERATION_CLASS_MASK);
-        }
-
-        if (clsDef.equals("")) {
-            clsDef = PUBLIC + SPACE + CLASS + SPACE + yangName + OPERATION + SPACE + EXTEND + SPACE
-                    + getCapitalCase(DEFAULT) + yangName + SPACE;
-        }
-        if (curNode instanceof YangAugment) {
-            clsDef = clsDef + IMPLEMENTS + SPACE + YANG_AUGMENTED_OP_PARAM_INFO + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
-        } else {
-            clsDef = clsDef + OPEN_CURLY_BRACKET + NEW_LINE;
-        }
-
-        return clsDef;
-    }
-
-    /**
      * Returns impl file class definition.
      *
      * @param yangName file name
@@ -293,7 +252,7 @@
         YangIdentity identity = (YangIdentity) curNode;
         if (identity.getBaseNode() != null) {
             YangIdentity baseIdentity = identity.getBaseNode().getReferredIdentity();
-            if (!(baseIdentity instanceof YangIdentity)) {
+            if (baseIdentity == null) {
                 throw new TranslatorException("Expected java identity instance node");
             }
 
@@ -367,10 +326,8 @@
      * @return definition
      */
     private static String getEventDefinition(String javaName, String eventName) {
-        String classDef = PUBLIC + SPACE + CLASS + SPACE + javaName + SPACE + "extends AbstractEvent<"
+        return PUBLIC + SPACE + CLASS + SPACE + javaName + SPACE + "extends AbstractEvent<"
                 + javaName + ".Type, " + eventName + ">" + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
-
-        return classDef;
     }
 
     /**
@@ -380,15 +337,15 @@
      * @return definition
      */
     private static String getEventListenerDefinition(String javaName) {
-        String intfDef = PUBLIC + SPACE + INTERFACE + SPACE + javaName + SPACE + "extends EventListener<"
+        String interfaceDef = PUBLIC + SPACE + INTERFACE + SPACE + javaName + SPACE + "extends EventListener<"
                 + javaName;
-        if (intfDef.length() < 8) {
+        if (interfaceDef.length() < 8) {
             throw new RuntimeException("Event listener interface name is error");
         }
-        intfDef = intfDef.substring(0, intfDef.length() - 8);
-        intfDef = intfDef + ">" + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+        interfaceDef = interfaceDef.substring(0, interfaceDef.length() - 8);
+        interfaceDef = interfaceDef + ">" + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
 
-        return intfDef;
+        return interfaceDef;
     }
 
     /**
@@ -415,21 +372,23 @@
                     builderDef = getDefinitionString(builderDef, holder);
                     return builderDef + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
                 case BUILDER_CLASS_MASK:
-                    def = def + CLASS + SPACE + yangName + BUILDER + SPACE + EXTEND + SPACE;
+                    def = def + STATIC + SPACE + CLASS + SPACE + yangName + BUILDER + SPACE + EXTEND + SPACE;
                     def = getDefinitionString(def, holder);
+                    if (curNode instanceof YangSubModule || curNode instanceof YangModule) {
+                        return def + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+                    }
                     return def + SPACE + IMPLEMENTS + SPACE + yangName + PERIOD
                             + yangName + BUILDER + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
 
-                case IMPL_CLASS_MASK:
-                    def = def + SPACE + CLASS + SPACE + getCapitalCase(DEFAULT) + yangName + SPACE + EXTEND + SPACE;
+                case DEFAULT_CLASS_MASK:
+                    if (curNode instanceof YangSubModule || curNode instanceof YangModule) {
+                        def = def + CLASS + SPACE + yangName + OP_PARAM + SPACE + EXTEND + SPACE;
+                    } else {
+                        def = def + CLASS + SPACE + getCapitalCase(DEFAULT) + yangName + SPACE + EXTEND + SPACE;
+                    }
                     def = getDefinitionString(def, holder);
                     return def + SPACE + IMPLEMENTS + SPACE
                             + yangName + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
-
-                case OPERATION_CLASS_MASK:
-                    def = def + CLASS + SPACE + yangName + OPERATION + SPACE + EXTEND + SPACE;
-                    def = getDefinitionString(def, holder);
-                    return def + SPACE;
                 default:
                     return null;
             }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
index 8ec8141..01fb650 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
@@ -19,40 +19,36 @@
 import java.util.List;
 
 import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaServiceFragmentFiles;
-import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
-import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE_ANNOTATION_IMPORT;
+import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST;
 import static org.onosproject.yangutils.utils.UtilConstants.CLASS_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
 import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
 import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
-import static org.onosproject.yangutils.utils.UtilConstants.COMPONENT_ANNOTATION;
-import static org.onosproject.yangutils.utils.UtilConstants.COMPONENT_ANNOTATION_IMPORT;
-import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE_ANNOTATION_IMPORT;
 import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
 import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
+import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.ENUM;
 import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
 import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.HASH_MAP;
-import static org.onosproject.yangutils.utils.UtilConstants.IMMEDIATE;
 import static org.onosproject.yangutils.utils.UtilConstants.IMPORT;
 import static org.onosproject.yangutils.utils.UtilConstants.INT;
 import static org.onosproject.yangutils.utils.UtilConstants.INT_MAX_RANGE_ATTR;
 import static org.onosproject.yangutils.utils.UtilConstants.INT_MIN_RANGE_ATTR;
 import static org.onosproject.yangutils.utils.UtilConstants.LIST;
 import static org.onosproject.yangutils.utils.UtilConstants.LISTENER_SERVICE;
-import static org.onosproject.yangutils.utils.UtilConstants.LOGGER_FACTORY_IMPORT;
-import static org.onosproject.yangutils.utils.UtilConstants.LOGGER_IMPORT;
 import static org.onosproject.yangutils.utils.UtilConstants.LONG_MAX_RANGE_ATTR;
 import static org.onosproject.yangutils.utils.UtilConstants.LONG_MIN_RANGE_ATTR;
 import static org.onosproject.yangutils.utils.UtilConstants.MAP;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
 import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
@@ -60,10 +56,7 @@
 import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
 import static org.onosproject.yangutils.utils.UtilConstants.QUESTION_MARK;
 import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
-import static org.onosproject.yangutils.utils.UtilConstants.SERVICE_ANNOTATION;
-import static org.onosproject.yangutils.utils.UtilConstants.SERVICE_ANNOTATION_IMPORT;
 import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
-import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
 import static org.onosproject.yangutils.utils.UtilConstants.TYPE;
 import static org.onosproject.yangutils.utils.UtilConstants.UINT_MAX_RANGE_ATTR;
 import static org.onosproject.yangutils.utils.UtilConstants.UINT_MIN_RANGE_ATTR;
@@ -93,7 +86,7 @@
      */
     public static String getFileHeaderComment() {
 
-        /**
+        /*
          * TODO return the file header.
          */
         return null;
@@ -119,39 +112,29 @@
      * @param attributeAccessType  attribute access type
      * @return the textual java code for attribute definition in class
      */
-    public static String getJavaAttributeDefination(String javaAttributeTypePkg, String javaAttributeType,
+    public static String getJavaAttributeDefinition(String javaAttributeTypePkg, String javaAttributeType,
                                                     String javaAttributeName, boolean isList,
                                                     String attributeAccessType) {
 
-        String attributeDefination = attributeAccessType + SPACE;
+        String attributeDefinition = attributeAccessType + SPACE;
 
         if (!isList) {
             if (javaAttributeTypePkg != null) {
-                attributeDefination = attributeDefination + javaAttributeTypePkg + PERIOD;
+                attributeDefinition = attributeDefinition + javaAttributeTypePkg + PERIOD;
             }
 
-            attributeDefination = attributeDefination + javaAttributeType + SPACE + javaAttributeName + SEMI_COLAN
+            attributeDefinition = attributeDefinition + javaAttributeType + SPACE + javaAttributeName + SEMI_COLAN
                     + NEW_LINE;
         } else {
-            attributeDefination = attributeDefination + LIST + DIAMOND_OPEN_BRACKET;
+            attributeDefinition = attributeDefinition + LIST + DIAMOND_OPEN_BRACKET;
             if (javaAttributeTypePkg != null) {
-                attributeDefination = attributeDefination + javaAttributeTypePkg + PERIOD;
+                attributeDefinition = attributeDefinition + javaAttributeTypePkg + PERIOD;
             }
 
-            attributeDefination = attributeDefination + javaAttributeType + DIAMOND_CLOSE_BRACKET + SPACE
-                    + javaAttributeName + SEMI_COLAN + NEW_LINE;
+            attributeDefinition = attributeDefinition + javaAttributeType + DIAMOND_CLOSE_BRACKET + SPACE
+                    + javaAttributeName + SPACE + EQUAL + SPACE + NEW + SPACE + ARRAY_LIST + SEMI_COLAN + NEW_LINE;
         }
-        return attributeDefination;
-    }
-
-    /**
-     * Returns list attribute string.
-     *
-     * @param type attribute type
-     * @return list attribute string
-     */
-    public static String getListAttribute(String type) {
-        return LIST + DIAMOND_OPEN_BRACKET + type + DIAMOND_CLOSE_BRACKET;
+        return attributeDefinition;
     }
 
     /**
@@ -172,37 +155,12 @@
      * @return string for enum's attribute
      */
     public static String generateEnumAttributeString(String name, int value, YangPluginConfig pluginConfig) {
-        return getJavaDoc(ENUM_ATTRIBUTE, name, false, pluginConfig) + FOUR_SPACE_INDENTATION
-                + getEnumJavaAttribute(name).toUpperCase() + OPEN_PARENTHESIS
+        return NEW_LINE + getJavaDoc(ENUM_ATTRIBUTE, name, false, pluginConfig)
+                + EIGHT_SPACE_INDENTATION + getEnumJavaAttribute(name).toUpperCase() + OPEN_PARENTHESIS
                 + value + CLOSE_PARENTHESIS + COMMA + NEW_LINE;
     }
 
     /**
-     * Adds annotations imports.
-     *
-     * @param imports   list if imports
-     * @param operation to add or to delete
-     */
-    public static void addAnnotationsImports(List<String> imports, boolean operation) {
-        if (operation) {
-            imports.add(ACTIVATE_ANNOTATION_IMPORT);
-            imports.add(DEACTIVATE_ANNOTATION_IMPORT);
-            imports.add(COMPONENT_ANNOTATION_IMPORT);
-            imports.add(SERVICE_ANNOTATION_IMPORT);
-            imports.add(LOGGER_FACTORY_IMPORT);
-            imports.add(LOGGER_IMPORT);
-        } else {
-            imports.remove(ACTIVATE_ANNOTATION_IMPORT);
-            imports.remove(DEACTIVATE_ANNOTATION_IMPORT);
-            imports.remove(COMPONENT_ANNOTATION_IMPORT);
-            imports.remove(SERVICE_ANNOTATION_IMPORT);
-            imports.remove(LOGGER_FACTORY_IMPORT);
-            imports.remove(LOGGER_IMPORT);
-        }
-        sortImports(imports);
-    }
-
-    /**
      * Returns sorted import list.
      *
      * @param imports import list
@@ -233,7 +191,7 @@
      */
     public static void addListenersImport(YangNode curNode, List<String> imports, boolean operation,
                                           String classInfo) {
-        String thisImport = "";
+        String thisImport;
         TempJavaServiceFragmentFiles tempJavaServiceFragmentFiles = ((JavaCodeGeneratorInfo) curNode)
                 .getTempJavaCodeFragmentFiles().getServiceTempFiles();
         if (classInfo.equals(LISTENER_SERVICE)) {
@@ -276,23 +234,13 @@
     }
 
     /**
-     * Returns component string.
-     *
-     * @return component string
-     */
-    static String addComponentString() {
-        return NEW_LINE + COMPONENT_ANNOTATION + OPEN_PARENTHESIS + IMMEDIATE + SPACE
-                + EQUAL + SPACE + TRUE + CLOSE_PARENTHESIS + NEW_LINE + SERVICE_ANNOTATION;
-    }
-
-    /**
      * Returns attribute for augmentation.
      *
      * @return attribute for augmentation
      */
     static String addAugmentationAttribute() {
         return NEW_LINE + FOUR_SPACE_INDENTATION + PRIVATE + SPACE + MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING
-                + DIAMOND_OPEN_BRACKET + QUESTION_MARK + DIAMOND_CLOSE_BRACKET + COMMA + SPACE + YANG_AUGMENTED_INFO
+                + DIAMOND_OPEN_BRACKET + QUESTION_MARK + DIAMOND_CLOSE_BRACKET + COMMA + SPACE + OBJECT_STRING
                 + DIAMOND_CLOSE_BRACKET + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + SPACE + EQUAL + SPACE +
                 NEW + SPACE + HASH_MAP + DIAMOND_OPEN_BRACKET + DIAMOND_CLOSE_BRACKET + OPEN_PARENTHESIS
                 + CLOSE_PARENTHESIS + SEMI_COLAN;
@@ -332,4 +280,76 @@
                     FOUR_SPACE_INDENTATION + modifier + SPACE + ULONG_MAX_RANGE_ATTR;
         }
     }
+
+    /**
+     * Returns operation type enum.
+     *
+     * @return operation type enum
+     */
+    static String getOperationTypeEnum() {
+        return "\n" +
+                "    /**\n" +
+                "     * Specify the node specific operation in protocols like NETCONF.\n" +
+                "     * Applicable in protocol edit operation, not applicable in query operation\n" +
+                "     */\n" +
+                "    public enum OperationType {\n" +
+                "        MERGE,\n" +
+                "        REPLACE,\n" +
+                "        CREATE,\n" +
+                "        DELETE,\n" +
+                "        REMOVE\n" +
+                "    }\n";
+    }
+
+    /**
+     * Returns operation type enum, leaf value set attribute and select leaf attribute.
+     *
+     * @return operation type enum, leaf value set attribute and select leaf attribute.
+     */
+    static String getOperationAttributes() {
+        return "    /**\n" +
+                "     * Identify the leafs whose value are explicitly set\n" +
+                "     * Applicable in protocol edit and query operation\n" +
+                "     */\n" +
+                "    private BitSet _valueLeafFlags = new BitSet();\n" +
+                "\n" +
+                "    /**\n" +
+                "     * Identify the leafs to be selected, in a query operation\n" +
+                "     */\n" +
+                "    private BitSet _selectLeafFlags = new BitSet();\n";
+    }
+
+    /**
+     * Returns operation type enum, leaf value set attribute and select leaf attribute.
+     *
+     * @return operation type enum, leaf value set attribute and select leaf attribute.
+     */
+    static String getOperationTypeAttr() {
+        return "\n    /**\n" +
+                "     * Specify the node specific operation in protocols like NETCONF.\n" +
+                "     * Applicable in protocol edit operation, will be ignored in query operation\n" +
+                "     */\n" +
+                "    private OperationType _operationType;\n" +
+                "\n";
+    }
+
+    /**
+     * Returns operation type enum, leaf value set attribute and select leaf attribute for constructor.
+     *
+     * @return operation type enum, leaf value set attribute and select leaf attribute for constructor
+     */
+    static String getOperationAttributeForConstructor() {
+        return "        this._valueLeafFlags = builderObject.get_valueLeafFlags();\n" +
+                "        this._selectLeafFlags = builderObject.get_selectLeafFlags();\n";
+    }
+
+    /**
+     * Returns operation type enum, leaf value set attribute and select leaf attribute for constructor.
+     *
+     * @return operation type enum, leaf value set attribute and select leaf attribute for constructor
+     */
+    static String getOperationTypeForConstructor() {
+        return "        this._operationType = builderObject.get_operationType();\n";
+    }
+
 }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaExtendsListHolder.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaExtendsListHolder.java
index a741312..65983e4 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaExtendsListHolder.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaExtendsListHolder.java
@@ -52,7 +52,7 @@
      *
      * @return extends list
      */
-    public Map<JavaQualifiedTypeInfoTranslator, Boolean> getExtendedClassStore() {
+    Map<JavaQualifiedTypeInfoTranslator, Boolean> getExtendedClassStore() {
         return extendedClassStore;
     }
 
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
index 331878b..434e09f 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
@@ -21,21 +21,20 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.onosproject.yangutils.datamodel.YangAugment;
 import org.onosproject.yangutils.datamodel.YangAugmentableNode;
+import org.onosproject.yangutils.datamodel.YangChoice;
 import org.onosproject.yangutils.datamodel.YangDerivedInfo;
-import org.onosproject.yangutils.datamodel.YangLeaf;
-import org.onosproject.yangutils.datamodel.YangLeafList;
 import org.onosproject.yangutils.datamodel.YangLeavesHolder;
 import org.onosproject.yangutils.datamodel.YangModule;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangSubModule;
 import org.onosproject.yangutils.datamodel.YangType;
 import org.onosproject.yangutils.datamodel.YangTypeDef;
+import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
+import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
 import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
-import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
@@ -43,11 +42,12 @@
 import org.onosproject.yangutils.translator.tojava.TempJavaEventFragmentFiles;
 import org.onosproject.yangutils.translator.tojava.TempJavaServiceFragmentFiles;
 import org.onosproject.yangutils.translator.tojava.TempJavaTypeFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.YangJavaModelUtils;
-import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BINARY;
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BITS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.DEFAULT_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
@@ -55,10 +55,9 @@
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.IMPL_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.INTERFACE_MASK;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.OPERATION_BUILDER_CLASS_MASK;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.OPERATION_CLASS_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ADD_TO_LIST_IMPL_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ADD_TO_LIST_INTERFACE_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ATTRIBUTES_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_FOR_TYPE_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_IMPL_MASK;
@@ -73,8 +72,8 @@
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.GETTER_FOR_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.GETTER_FOR_INTERFACE_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.HASH_CODE_IMPL_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.OF_STRING_IMPL_MASK;
-import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.RPC_IMPL_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.RPC_INTERFACE_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_INTERFACE_MASK;
@@ -82,19 +81,19 @@
 import static org.onosproject.yangutils.translator.tojava.JavaAttributeInfo.getAttributeInfoForTheData;
 import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator.getQualifiedTypeInfoOfCurNode;
 import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.getCurNodeAsAttributeInTarget;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.addAugmentationAttribute;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getEnumsValueAttribute;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getEventEnumTypeStart;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getOperationAttributeForConstructor;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getOperationAttributes;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getOperationTypeAttr;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getOperationTypeEnum;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getOperationTypeForConstructor;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getDataFromTempFileHandle;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.initiateJavaFileGeneration;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.addActivateMethod;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.addDeActivateMethod;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.builderMethod;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAddAugmentInfoMethodImpl;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAugmentInfoImpl;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAugmentInfoMapImpl;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAugmentsDataMethodForManager;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAddAugmentInfoMethodInterface;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAugmentsDataMethodForService;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getBaseClassMethodImpl;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getConstructorStart;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEnumsConstructor;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEnumsOfMethod;
@@ -103,78 +102,62 @@
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getFromStringMethodClose;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getFromStringMethodSignature;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGetter;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGetterForClass;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGetterForOperationType;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGetterString;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGettersForValueAndSelectLeaf;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getHashCodeMethodClose;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getHashCodeMethodOpen;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getInterfaceLeafIdEnumMethods;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getInterfaceLeafIdEnumSignature;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getIsFilterContentMatch;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getOmitNullValueString;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getOpParamConstructorStart;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getOperationTypeSetter;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getOperationTypegetter;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getOperationAttributesGetters;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getOverRideString;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterForClass;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterForLeaf;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterForLeafList;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getRangeValidatorMethodForUnion;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterForOperationType;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterForSelectLeaf;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterString;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringLeafListgetter;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringLeafgetter;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringMethodClose;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringMethodOpen;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringSelectLeafListgetter;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringSelectLeafgetter;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getYangAugmentInfoImpl;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getYangAugmentInfoInterface;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getYangAugmentInfoMapImpl;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getYangAugmentInfoMapInterface;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.isFilterContentMatchInterface;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.isLeafValueSetInterface;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.isSelectLeafSetInterface;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.setSelectLeafSetInterface;
 import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
 import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
-import static org.onosproject.yangutils.utils.UtilConstants.BITSET;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
 import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
 import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
 import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
-import static org.onosproject.yangutils.utils.UtilConstants.CREATE;
 import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
-import static org.onosproject.yangutils.utils.UtilConstants.DELETE;
 import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.ENCODE_TO_STRING;
-import static org.onosproject.yangutils.utils.UtilConstants.ENUM;
-import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
 import static org.onosproject.yangutils.utils.UtilConstants.EVENT_LISTENER_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.EVENT_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.EVENT_SUBJECT_NAME_SUFFIX;
-import static org.onosproject.yangutils.utils.UtilConstants.FILTER_LEAF;
-import static org.onosproject.yangutils.utils.UtilConstants.FILTER_LEAF_LIST;
 import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.GET_ENCODER;
-import static org.onosproject.yangutils.utils.UtilConstants.GET_FILTER_LEAF;
-import static org.onosproject.yangutils.utils.UtilConstants.GET_FILTER_LEAF_LIST;
 import static org.onosproject.yangutils.utils.UtilConstants.IMPORT;
 import static org.onosproject.yangutils.utils.UtilConstants.INT;
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_UTIL_IMPORT_BASE64_CLASS;
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_UTIL_OBJECTS_IMPORT_PKG;
-import static org.onosproject.yangutils.utils.UtilConstants.LOGGER_STATEMENT;
-import static org.onosproject.yangutils.utils.UtilConstants.MANAGER;
-import static org.onosproject.yangutils.utils.UtilConstants.MERGE;
-import static org.onosproject.yangutils.utils.UtilConstants.NEW;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
-import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
 import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
 import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
-import static org.onosproject.yangutils.utils.UtilConstants.OPERATION_ENUM;
-import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM_TYPE;
+import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
 import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
 import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
-import static org.onosproject.yangutils.utils.UtilConstants.REMOVE;
-import static org.onosproject.yangutils.utils.UtilConstants.REPLACE;
 import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
-import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF;
-import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF_LIST;
 import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
 import static org.onosproject.yangutils.utils.UtilConstants.SERVICE_METHOD_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
-import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
 import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
-import static org.onosproject.yangutils.utils.UtilConstants.SUPER;
 import static org.onosproject.yangutils.utils.UtilConstants.TO;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
@@ -218,21 +201,63 @@
 
         String className = getCapitalCase(javaFileInfo.getJavaName());
 
-        initiateJavaFileGeneration(file, INTERFACE_MASK, imports, curNode, className);
+        boolean isLeavesPresent;
+        YangLeavesHolder leavesHolder;
+        if (curNode instanceof YangLeavesHolder) {
+            leavesHolder = (YangLeavesHolder) curNode;
+            isLeavesPresent = leavesHolder.getListOfLeaf() != null && !leavesHolder.getListOfLeaf().isEmpty()
+                    || leavesHolder.getListOfLeafList() != null && !leavesHolder.getListOfLeafList().isEmpty();
+        } else {
+            isLeavesPresent = false;
+        }
 
+        initiateJavaFileGeneration(file, INTERFACE_MASK, imports, curNode, className);
+        List<String> methods = new ArrayList<>();
         if (isAttrPresent) {
             // Add getter methods to interface file.
             try {
+                //Leaf identifier enum.
+                if (isLeavesPresent) {
+                    insertDataIntoJavaFile(file, NEW_LINE + getInterfaceLeafIdEnumSignature(className) + NEW_LINE +
+                            trimAtLast(trimAtLast(
+                                    getDataFromTempFileHandle(LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK,
+                                            ((TempJavaCodeFragmentFilesContainer) curNode)
+                                                    .getTempJavaCodeFragmentFiles()
+                                                    .getBeanTempFiles(), path), COMMA), NEW_LINE) + SEMI_COLAN
+                            + NEW_LINE + NEW_LINE + getInterfaceLeafIdEnumMethods());
+                }
+
                 //Getter methods.
                 insertDataIntoJavaFile(file, getDataFromTempFileHandle(GETTER_FOR_INTERFACE_MASK,
                         ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
                                 .getBeanTempFiles(), path));
+                //Add to list method.
+                insertDataIntoJavaFile(file, getDataFromTempFileHandle(ADD_TO_LIST_INTERFACE_MASK,
+                        ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+                                .getBeanTempFiles(), path));
             } catch (IOException e) {
                 throw new IOException("No data found in temporary java code fragment files for " + className
                         + " while interface file generation");
             }
         }
+
+        if (curNode instanceof YangAugmentableNode && !(curNode instanceof YangChoice)) {
+            methods.add(getAddAugmentInfoMethodInterface());
+            methods.add(getYangAugmentInfoInterface());
+            methods.add(getYangAugmentInfoMapInterface(javaFileInfo.getPluginConfig()));
+        }
+        if (!(curNode instanceof YangChoice)) {
+            methods.add(NEW_LINE + isFilterContentMatchInterface(className));
+        }
+        if (!(curNode instanceof YangChoice) && isLeavesPresent) {
+            methods.add(NEW_LINE + isLeafValueSetInterface());
+            methods.add(NEW_LINE + isSelectLeafSetInterface());
+        }
+        for (String method : methods) {
+            insertDataIntoJavaFile(file, method);
+        }
         return validateLineLength(file);
+
     }
 
     /**
@@ -250,6 +275,16 @@
         JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
         YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig();
 
+        boolean isLeavesPresent;
+        YangLeavesHolder leavesHolder;
+        if (curNode instanceof YangLeavesHolder) {
+            leavesHolder = (YangLeavesHolder) curNode;
+            isLeavesPresent = leavesHolder.getListOfLeaf() != null && !leavesHolder.getListOfLeaf().isEmpty()
+                    || leavesHolder.getListOfLeafList() != null && !leavesHolder.getListOfLeafList().isEmpty();
+        } else {
+            isLeavesPresent = false;
+        }
+
         String className = getCapitalCase(javaFileInfo.getJavaName());
         String path;
         if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
@@ -279,6 +314,9 @@
             }
         }
 
+        if (isLeavesPresent) {
+            methods.add(NEW_LINE + setSelectLeafSetInterface(className));
+        }
         //Add build method to builder interface file.
         methods.add(
                 ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
@@ -303,16 +341,28 @@
      * @return builder class file
      * @throws IOException when fails to write in file
      */
+
     public static File generateBuilderClassFile(File file, YangNode curNode,
                                                 boolean isAttrPresent) throws IOException {
 
         JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
         YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig();
 
-        String className = getCapitalCase(javaFileInfo.getJavaName());
+        boolean isLeavesPresent;
+        YangLeavesHolder leavesHolder;
+        if (curNode instanceof YangLeavesHolder) {
+            leavesHolder = (YangLeavesHolder) curNode;
+            isLeavesPresent = leavesHolder.getListOfLeaf() != null && !leavesHolder.getListOfLeaf().isEmpty()
+                    || leavesHolder.getListOfLeafList() != null && !leavesHolder.getListOfLeafList().isEmpty();
+        } else {
+            isLeavesPresent = false;
+        }
 
+        String className = getCapitalCase(javaFileInfo.getJavaName());
+        boolean isRootNode = false;
         String path;
         if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
+            isRootNode = true;
             path = javaFileInfo.getPluginConfig().getCodeGenDir() + javaFileInfo.getPackageFilePath();
         } else {
             path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
@@ -334,6 +384,10 @@
                         + " while builder class file generation");
             }
 
+            insertDataIntoJavaFile(file, getOperationTypeAttr());
+            if (isLeavesPresent) {
+                insertDataIntoJavaFile(file, getOperationAttributes());
+            }
             try {
                 //Getter methods.
                 methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK,
@@ -345,6 +399,14 @@
                                 .getBeanTempFiles(), path));
 
                 insertDataIntoJavaFile(file, NEW_LINE);
+
+                methods.add(getGetterForOperationType());
+                methods.add(getSetterForOperationType(className));
+                //Add operation attribute methods.
+                if (isLeavesPresent) {
+                    methods.add(getOperationAttributesGetters() + NEW_LINE);
+                    methods.add(getSetterForSelectLeaf(className, isRootNode));
+                }
             } catch (IOException e) {
                 throw new IOException("No data found in temporary java code fragment files for " + className
                         + " while builder class file generation");
@@ -355,191 +417,22 @@
 
         // Add default constructor and build method impl.
         methods.add(((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
-                .addBuildMethodImpl());
+                .addBuildMethodImpl(curNode));
         methods.add(((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
-                .addDefaultConstructor(PUBLIC, BUILDER, pluginConfig));
+                .addDefaultConstructor(PUBLIC, BUILDER, pluginConfig, curNode));
 
 
         //Add methods in builder class.
         for (String method : methods) {
             insertDataIntoJavaFile(file, method);
         }
+
         insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET);
         return validateLineLength(file);
     }
 
     /**
-     * Returns generated op param builder class file for current node.
-     *
-     * @param file          file handle
-     * @param curNode       current YANG node
-     * @param isAttrPresent if any attribute is present or not
-     * @return builder class file
-     * @throws IOException when fails to write in file
-     */
-    public static File generateOpParamBuilderClassFile(File file, YangNode curNode,
-                                                       boolean isAttrPresent) throws IOException {
-
-        JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
-        YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig();
-
-        String className = getCapitalCase(javaFileInfo.getJavaName());
-
-        initiateJavaFileGeneration(file, OPERATION_BUILDER_CLASS_MASK, null, curNode, className);
-        List<String> methods = new ArrayList<>();
-
-        if (isAttrPresent) {
-            //Add attribute strings.
-            try {
-                insertDataIntoJavaFile(file, FOUR_SPACE_INDENTATION + PRIVATE + SPACE +
-                        OPERATION_ENUM + SPACE + OP_PARAM_TYPE + SEMI_COLAN + NEW_LINE);
-
-            } catch (IOException e) {
-                throw new IOException("No data found in temporary java code fragment files for " + className
-                        + " while impl class file generation");
-            }
-
-            try {
-                if (curNode instanceof YangLeavesHolder) {
-                    YangLeavesHolder leavesHolder = (YangLeavesHolder) curNode;
-                    List<YangLeaf> leaves = leavesHolder.getListOfLeaf();
-                    List<YangLeafList> listOfLeafList = leavesHolder.getListOfLeafList();
-
-                    if (leaves != null && !leaves.isEmpty()) {
-                        insertDataIntoJavaFile(file, FOUR_SPACE_INDENTATION + PRIVATE + SPACE +
-                                BITSET + SPACE + FILTER_LEAF + SPACE + EQUAL + SPACE +
-                                NEW + SPACE + BITSET + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
-                                + NEW_LINE);
-
-                        insertDataIntoJavaFile(file, FOUR_SPACE_INDENTATION + PRIVATE + SPACE +
-                                BITSET + SPACE + SELECT_LEAF + SPACE + EQUAL + SPACE +
-                                NEW + SPACE + BITSET + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
-                                + SEMI_COLAN + NEW_LINE);
-                    }
-
-                    if (listOfLeafList != null && !listOfLeafList.isEmpty()) {
-                        insertDataIntoJavaFile(file, FOUR_SPACE_INDENTATION + PRIVATE + SPACE +
-                                BITSET + SPACE + FILTER_LEAF_LIST + SPACE + EQUAL + SPACE +
-                                NEW + SPACE + BITSET + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
-                                + SEMI_COLAN + NEW_LINE);
-
-                        insertDataIntoJavaFile(file, FOUR_SPACE_INDENTATION + PRIVATE + SPACE +
-                                BITSET + SPACE + SELECT_LEAF_LIST + SPACE + EQUAL + SPACE +
-                                NEW + SPACE + BITSET + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
-                                + SEMI_COLAN + NEW_LINE);
-                    }
-                }
-
-            } catch (IOException e) {
-                throw new IOException("No data found in temporary java code fragment files for " + className
-                        + " while impl class file generation");
-            }
-
-            try {
-                // Setter methods.
-                methods.add(getSetterForLeaf(className, curNode, pluginConfig));
-                methods.add(getSetterForLeafList(className, curNode, pluginConfig));
-
-                if (curNode instanceof YangLeavesHolder) {
-                    YangLeavesHolder leavesHolder = (YangLeavesHolder) curNode;
-                    List<YangLeaf> leaves = leavesHolder.getListOfLeaf();
-                    List<YangLeafList> listOfLeafList = leavesHolder.getListOfLeafList();
-
-                    if (leaves != null && !leaves.isEmpty()) {
-                        methods.add(getToStringLeafgetter());
-                        methods.add(getToStringSelectLeafgetter());
-                    }
-
-                    if (listOfLeafList != null && !listOfLeafList.isEmpty()) {
-                        methods.add(getToStringLeafListgetter());
-                        methods.add(getToStringSelectLeafListgetter());
-                    }
-                }
-
-                methods.add(getOperationTypegetter());
-                methods.add(getOperationTypeSetter());
-                insertDataIntoJavaFile(file, NEW_LINE);
-            } catch (IOException e) {
-                throw new IOException("No data found in temporary java code fragment files for " + className
-                        + " while builder class file generation");
-            }
-        } else {
-            insertDataIntoJavaFile(file, NEW_LINE);
-        }
-
-        // Add methods in builder class.
-        for (String method : methods) {
-            insertDataIntoJavaFile(file, method);
-        }
-        insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET);
-        return validateLineLength(file);
-    }
-
-
-    /**
-     * Returns generated manager class file for current node.
-     *
-     * @param file    file
-     * @param imports imports for the file
-     * @param curNode current YANG node
-     * @return builder class file
-     * @throws IOException when fails to write in file
-     */
-    public static File generateManagerClassFile(File file, List<String> imports, YangNode curNode)
-            throws IOException {
-
-        JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
-
-        String className = getCapitalCase(javaFileInfo.getJavaName()) + MANAGER;
-        String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
-
-        initiateJavaFileGeneration(file, GENERATE_SERVICE_AND_MANAGER, imports, curNode, className);
-
-        List<String> methods = new ArrayList<>();
-
-        insertDataIntoJavaFile(file, LOGGER_STATEMENT);
-        methods.add(addActivateMethod());
-        methods.add(addDeActivateMethod());
-
-        TempJavaServiceFragmentFiles tempJavaServiceFragmentFiles = ((JavaCodeGeneratorInfo) curNode)
-                .getTempJavaCodeFragmentFiles().getServiceTempFiles();
-
-        JavaAttributeInfo rootAttribute = getCurNodeAsAttributeInTarget(curNode, curNode, false,
-                tempJavaServiceFragmentFiles);
-        try {
-            //Getter methods.
-            methods.add(getOverRideString() +
-                    getGetterForClass(rootAttribute, GENERATE_SERVICE_AND_MANAGER) + NEW_LINE);
-            // Setter methods.
-            methods.add(getOverRideString() +
-                    getSetterForClass(rootAttribute, className, GENERATE_SERVICE_AND_MANAGER)
-                    + NEW_LINE);
-
-            methods.add(getAugmentsDataMethodForManager(curNode) + NEW_LINE);
-
-            if (((JavaCodeGeneratorInfo) curNode).getTempJavaCodeFragmentFiles().getServiceTempFiles() != null) {
-                JavaCodeGeneratorInfo javaGenInfo = (JavaCodeGeneratorInfo) curNode;
-
-                //Rpc methods
-                methods.add(getDataFromTempFileHandle(RPC_IMPL_MASK,
-                        javaGenInfo.getTempJavaCodeFragmentFiles().getServiceTempFiles(), path));
-            }
-            insertDataIntoJavaFile(file, NEW_LINE);
-
-        } catch (IOException e) {
-            throw new IOException("No data found in temporary java code fragment files for " + className
-                    + " while manager class file generation");
-        }
-
-        // Add methods in builder class.
-        for (String method : methods) {
-            insertDataIntoJavaFile(file, method);
-        }
-        return validateLineLength(file);
-    }
-
-    /**
-     * Returns generated impl class file for current node.
+     * Returns generated default class file for current node.
      *
      * @param file          file
      * @param curNode       current YANG node
@@ -548,25 +441,41 @@
      * @return impl class file
      * @throws IOException when fails to write in file
      */
-    public static File generateImplClassFile(File file, YangNode curNode, boolean isAttrPresent, List<String> imports)
+    public static File generateDefaultClassFile(File file, YangNode curNode, boolean isAttrPresent,
+                                                List<String> imports)
             throws IOException {
 
         JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
         YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig();
 
+        boolean isLeavesPresent;
+        YangLeavesHolder leavesHolder;
+        if (curNode instanceof YangLeavesHolder) {
+            leavesHolder = (YangLeavesHolder) curNode;
+            isLeavesPresent = leavesHolder.getListOfLeaf() != null && !leavesHolder.getListOfLeaf().isEmpty()
+                    || leavesHolder.getListOfLeafList() != null && !leavesHolder.getListOfLeafList().isEmpty();
+        } else {
+            isLeavesPresent = false;
+        }
+
+        boolean isRootNode = false;
+
         String className = getCapitalCase(javaFileInfo.getJavaName());
+        String opParamClassName = className;
         String path;
         if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
+            opParamClassName = className + OP_PARAM;
+            isRootNode = true;
             path = javaFileInfo.getPluginConfig().getCodeGenDir() + javaFileInfo.getPackageFilePath();
         } else {
             path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
         }
 
-        initiateJavaFileGeneration(file, IMPL_CLASS_MASK, imports, curNode, className);
+        initiateJavaFileGeneration(file, DEFAULT_CLASS_MASK, imports, curNode, className);
 
         List<String> methods = new ArrayList<>();
         if (curNode instanceof YangAugmentableNode) {
-            insertDataIntoJavaFile(file, addAugmentationAttribute());
+            insertDataIntoJavaFile(file, JavaCodeSnippetGen.addAugmentationAttribute());
         }
         if (isAttrPresent) {
 
@@ -581,12 +490,23 @@
                         + " while impl class file generation");
             }
 
+            //Add operation attributes
+            insertDataIntoJavaFile(file, getOperationTypeEnum());
+            insertDataIntoJavaFile(file, getOperationTypeAttr());
+            if (isLeavesPresent) {
+                insertDataIntoJavaFile(file, getOperationAttributes());
+            }
+
             try {
                 //Getter methods.
                 methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK,
                         ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
                                 .getBeanTempFiles(), path));
 
+                //Add to list impl method.
+                methods.add(getDataFromTempFileHandle(ADD_TO_LIST_IMPL_MASK,
+                        ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+                                .getBeanTempFiles(), path));
 
                 // Hash code method.
                 methods.add(getHashCodeMethodClose(getHashCodeMethodOpen() +
@@ -595,11 +515,17 @@
                                         .getBeanTempFiles(), path).replace(NEW_LINE, EMPTY_STRING)));
 
                 //Equals method.
-                methods.add(getEqualsMethodClose(getEqualsMethodOpen(getCapitalCase(DEFAULT) + className)
-                        + getDataFromTempFileHandle(EQUALS_IMPL_MASK,
-                        ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
-                                .getBeanTempFiles(), path)));
-
+                if (isRootNode) {
+                    methods.add(getEqualsMethodClose(getEqualsMethodOpen(opParamClassName)
+                            + getDataFromTempFileHandle(EQUALS_IMPL_MASK,
+                            ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+                                    .getBeanTempFiles(), path)));
+                } else {
+                    methods.add(getEqualsMethodClose(getEqualsMethodOpen(getCapitalCase(DEFAULT) + className)
+                            + getDataFromTempFileHandle(EQUALS_IMPL_MASK,
+                            ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+                                    .getBeanTempFiles(), path)));
+                }
                 // To string method.
                 methods.add(getToStringMethodOpen() + getDataFromTempFileHandle(TO_STRING_IMPL_MASK,
                         ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
@@ -613,26 +539,40 @@
         } else {
             insertDataIntoJavaFile(file, NEW_LINE);
         }
-        try {
 
+        if (curNode instanceof YangAugmentableNode) {
+            methods.add(getAddAugmentInfoMethodImpl());
+            methods.add(getYangAugmentInfoImpl());
+            methods.add(getYangAugmentInfoMapImpl());
+        }
+        try {
             //Constructor.
-            String constructor = getConstructorStart(className, pluginConfig);
+            String constructor = getConstructorStart(className, pluginConfig, isRootNode);
             constructor = constructor + getDataFromTempFileHandle(CONSTRUCTOR_IMPL_MASK,
                     ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
                             .getBeanTempFiles(), path);
 
-            methods.add(constructor + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET);
+            if (isAttrPresent) {
+                constructor = constructor + getOperationTypeForConstructor();
+            }
+            if (isLeavesPresent) {
+                constructor = constructor + getOperationAttributeForConstructor();
+            }
+            methods.add(constructor + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE);
         } catch (IOException e) {
             throw new IOException("No data found in temporary java code fragment files for " + className
                     + " while impl class file generation");
         }
 
-        if (curNode instanceof YangAugmentableNode) {
-            methods.add(getAddAugmentInfoMethodImpl());
-            methods.add(getAugmentInfoImpl());
-            methods.add(getAugmentInfoMapImpl(javaFileInfo.getPluginConfig()));
-        }
+        methods.add(((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+                .addDefaultConstructor(PUBLIC, DEFAULT, pluginConfig, curNode));
 
+        methods.add(builderMethod(className));
+        methods.add(getIsFilterContentMatch(curNode, pluginConfig));
+        if (isLeavesPresent) {
+            methods.add(getOperationAttributesGetters());
+            methods.add(getGettersForValueAndSelectLeaf());
+        }
         // Add methods in impl class.
         for (String method : methods) {
             insertDataIntoJavaFile(file, method);
@@ -642,161 +582,6 @@
     }
 
     /**
-     * Returns generated op param class file for current node.
-     *
-     * @param file          file handle
-     * @param curNode       current YANG node
-     * @param isAttrPresent if any attribute is present or not
-     * @param imports       import list
-     * @return returns generated op param class file for current node
-     * @throws IOException when fails to write in file
-     */
-    public static File generateOpParamImplClassFile(File file, YangNode curNode,
-                                                    boolean isAttrPresent, List<String> imports)
-            throws IOException {
-
-        JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
-        YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig();
-
-        String className = getCapitalCase(javaFileInfo.getJavaName());
-
-        initiateJavaFileGeneration(file, OPERATION_CLASS_MASK, imports, curNode, className);
-
-        List<String> methods = new ArrayList<>();
-
-        if (isAttrPresent) {
-
-            // Add attribute strings.
-            try {
-                insertDataIntoJavaFile(file, FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC +
-                        SPACE + ENUM + SPACE + OPERATION_ENUM + SPACE + OPEN_CURLY_BRACKET +
-                        NEW_LINE + EIGHT_SPACE_INDENTATION + MERGE +
-                        NEW_LINE + EIGHT_SPACE_INDENTATION + REPLACE +
-                        NEW_LINE + EIGHT_SPACE_INDENTATION + CREATE +
-                        NEW_LINE + EIGHT_SPACE_INDENTATION + DELETE +
-                        NEW_LINE + EIGHT_SPACE_INDENTATION + REMOVE +
-                        NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE);
-
-            } catch (IOException e) {
-                throw new IOException("No data found in temporary java code fragment files for " + className
-                        + " while impl class file generation");
-            }
-
-
-            // Add attribute strings.
-            try {
-                insertDataIntoJavaFile(file, FOUR_SPACE_INDENTATION + PRIVATE + SPACE +
-                        OPERATION_ENUM + SPACE + OP_PARAM_TYPE + SEMI_COLAN + NEW_LINE);
-
-            } catch (IOException e) {
-                throw new IOException("No data found in temporary java code fragment files for " + className
-                        + " while impl class file generation");
-            }
-
-            try {
-                if (curNode instanceof YangLeavesHolder) {
-                    YangLeavesHolder leavesHolder = (YangLeavesHolder) curNode;
-                    List<YangLeaf> leaves = leavesHolder.getListOfLeaf();
-                    List<YangLeafList> listOfLeafList = leavesHolder.getListOfLeafList();
-
-                    if (leaves != null && !leaves.isEmpty()) {
-                        insertDataIntoJavaFile(file, FOUR_SPACE_INDENTATION + PRIVATE + SPACE +
-                                BITSET + SPACE + FILTER_LEAF + SPACE + EQUAL + SPACE +
-                                NEW + SPACE + BITSET + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
-                                + SEMI_COLAN + NEW_LINE);
-
-                        insertDataIntoJavaFile(file, FOUR_SPACE_INDENTATION + PRIVATE + SPACE +
-                                BITSET + SPACE + SELECT_LEAF + SPACE + EQUAL + SPACE +
-                                NEW + SPACE + BITSET + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
-                                + SEMI_COLAN + NEW_LINE);
-                    }
-
-                    if (listOfLeafList != null && !listOfLeafList.isEmpty()) {
-                        insertDataIntoJavaFile(file, FOUR_SPACE_INDENTATION + PRIVATE + SPACE +
-                                BITSET + SPACE + FILTER_LEAF_LIST + SPACE + EQUAL + SPACE +
-                                NEW + SPACE + BITSET + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
-                                + SEMI_COLAN + NEW_LINE);
-
-                        insertDataIntoJavaFile(file, FOUR_SPACE_INDENTATION + PRIVATE + SPACE +
-                                BITSET + SPACE + SELECT_LEAF_LIST + SPACE + EQUAL + SPACE +
-                                NEW + SPACE + BITSET + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
-                                + SEMI_COLAN + NEW_LINE);
-                    }
-                }
-
-            } catch (IOException e) {
-                throw new IOException("No data found in temporary java code fragment files for " + className
-                        + " while impl class file generation");
-            }
-
-            if (curNode instanceof YangLeavesHolder) {
-                YangLeavesHolder leavesHolder = (YangLeavesHolder) curNode;
-                List<YangLeaf> leaves = leavesHolder.getListOfLeaf();
-                List<YangLeafList> listOfLeafList = leavesHolder.getListOfLeafList();
-
-                if (leaves != null && !leaves.isEmpty()) {
-                    methods.add(getToStringLeafgetter());
-                    methods.add(getToStringSelectLeafgetter());
-                }
-
-                if (listOfLeafList != null && !listOfLeafList.isEmpty()) {
-                    methods.add(getToStringLeafListgetter());
-                    methods.add(getToStringSelectLeafListgetter());
-                }
-            }
-
-            methods.add(getOperationTypegetter());
-            methods.add(getIsFilterContentMatch(className, curNode, pluginConfig));
-
-        } else {
-            insertDataIntoJavaFile(file, NEW_LINE);
-        }
-        String constructor = getOpParamConstructorStart(className, pluginConfig);
-
-        constructor = constructor + EIGHT_SPACE_INDENTATION + SUPER + OPEN_PARENTHESIS
-                + BUILDER.toLowerCase() + OBJECT
-                + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
-
-        if (curNode instanceof YangLeavesHolder) {
-            YangLeavesHolder leavesHolder = (YangLeavesHolder) curNode;
-            List<YangLeaf> leaves = leavesHolder.getListOfLeaf();
-            List<YangLeafList> listOfLeafList = leavesHolder.getListOfLeafList();
-            String filterLeaf = "";
-            String filterLeafList = "";
-
-            if (leaves != null && !leaves.isEmpty()) {
-                filterLeaf = EIGHT_SPACE_INDENTATION + FILTER_LEAF + SPACE + EQUAL + SPACE
-                        + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_FILTER_LEAF + OPEN_PARENTHESIS
-                        + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
-            }
-
-            if (listOfLeafList != null && !listOfLeafList.isEmpty()) {
-                filterLeafList = EIGHT_SPACE_INDENTATION + FILTER_LEAF_LIST + SPACE + EQUAL + SPACE
-                        + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_FILTER_LEAF_LIST + OPEN_PARENTHESIS
-                        + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
-            }
-
-            constructor = constructor + filterLeaf + filterLeafList;
-        }
-
-        methods.add(constructor + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET);
-
-        if (curNode instanceof YangAugment) {
-            String clsName = getCapitalCase(DEFAULT) +
-                    getCapitalCase(YangJavaModelUtils.getAugmentClassName((YangAugment) curNode, pluginConfig));
-            methods.add(getBaseClassMethodImpl(clsName));
-        }
-
-        // Add methods in impl class.
-        for (String method : methods) {
-            insertDataIntoJavaFile(file, method);
-        }
-
-
-        return validateLineLength(file);
-    }
-
-    /**
      * Generates class file for type def.
      *
      * @param file    generated file
@@ -818,7 +603,7 @@
         List<YangType<?>> types = typeDef.getTypeList();
         YangType type = types.get(0);
         YangDataTypes yangDataTypes = type.getDataType();
-        if (type.getDataType().equals(YangDataTypes.BINARY)) {
+        if (type.getDataType().equals(BINARY)) {
             imports.add(IMPORT + JAVA_UTIL_OBJECTS_IMPORT_PKG + PERIOD + JAVA_UTIL_IMPORT_BASE64_CLASS);
         }
 
@@ -841,11 +626,10 @@
 
         //Default constructor.
         methods.add(((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
-                .addDefaultConstructor(PRIVATE, EMPTY_STRING, pluginConfig));
+                .addDefaultConstructor(PRIVATE, EMPTY_STRING, pluginConfig, curNode));
 
         try {
 
-
             //Type constructor.
             methods.add(getDataFromTempFileHandle(CONSTRUCTOR_FOR_TYPE_MASK,
                     ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles(),
@@ -879,27 +663,27 @@
 
 
             //To string method.
-            if (type.getDataType().equals(YangDataTypes.BINARY)) {
+            if (type.getDataType().equals(BINARY)) {
                 JavaQualifiedTypeInfoTranslator qualifiedTypeInfo = getQualifiedTypeInfoOfCurNode(curNode,
                         getCapitalCase("binary"));
 
                 JavaAttributeInfo attr = getAttributeInfoForTheData(qualifiedTypeInfo, "binary", null, false,
                         false);
                 String attributeName = attr.getAttributeName();
-                String bitsToStringMethod = MethodsGenerator.getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC
+                String bitsToStringMethod = getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC
                         + SPACE + STRING_DATA_TYPE + SPACE + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS
                         + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
                         + RETURN + SPACE + BASE64 + PERIOD + GET_ENCODER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
                         + PERIOD + ENCODE_TO_STRING + OPEN_PARENTHESIS + attributeName + CLOSE_PARENTHESIS
                         + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
                 methods.add(bitsToStringMethod);
-            } else if (type.getDataType().equals(YangDataTypes.BITS)) {
+            } else if (type.getDataType().equals(BITS)) {
                 JavaQualifiedTypeInfoTranslator qualifiedTypeInfo = getQualifiedTypeInfoOfCurNode(curNode,
                         getCapitalCase("bits"));
 
                 JavaAttributeInfo attr = getAttributeInfoForTheData(qualifiedTypeInfo, "bits", null, false, false);
                 String attributeName = attr.getAttributeName();
-                String bitsToStringMethod = MethodsGenerator.getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC
+                String bitsToStringMethod = getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC
                         + SPACE + STRING_DATA_TYPE + SPACE + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS
                         + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
                         + RETURN + SPACE + attributeName + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS
@@ -914,6 +698,7 @@
 
             JavaCodeGeneratorInfo javaGenInfo = (JavaCodeGeneratorInfo) curNode;
 
+            //From string method.
             if ((type.getDataType().equals(YangDataTypes.DERIVED))
                     && (((YangDerivedInfo) type.getDataTypeExtendedInfo()).getEffectiveBuiltInType()
                     .equals(YangDataTypes.IDENTITYREF))) {
@@ -925,14 +710,10 @@
             }
 
             if (!yangDataTypes.equals(YangDataTypes.IDENTITYREF)) {
-
-
-                //From string method.
                 methods.add(getFromStringMethodSignature(className, pluginConfig)
-                                    + getDataFromTempFileHandle(FROM_STRING_IMPL_MASK, javaGenInfo
-                        .getTempJavaCodeFragmentFiles()
+                        + getDataFromTempFileHandle(FROM_STRING_IMPL_MASK, javaGenInfo.getTempJavaCodeFragmentFiles()
                         .getTypeTempFiles(), path)
-                                    + getFromStringMethodClose());
+                        + getFromStringMethodClose());
             }
 
         } catch (IOException e) {
@@ -1022,7 +803,7 @@
 
         //Default constructor.
         methods.add(((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
-                .addDefaultConstructor(PRIVATE, EMPTY_STRING, pluginConfig));
+                .addDefaultConstructor(PRIVATE, EMPTY_STRING, pluginConfig, curNode));
 
         try {
 
@@ -1074,10 +855,10 @@
                     + getFromStringMethodClose());
 
             if (isIntConflict) {
-                methods.add(MethodsGenerator.getRangeValidatorMethodForUnion(INT));
+                methods.add(getRangeValidatorMethodForUnion(INT));
             }
             if (isLongConflict) {
-                methods.add(MethodsGenerator.getRangeValidatorMethodForUnion(BIG_INTEGER));
+                methods.add(getRangeValidatorMethodForUnion(BIG_INTEGER));
             }
 
         } catch (IOException e) {
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
index 2c00cc2..b09f123 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
@@ -20,11 +20,14 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+
 import org.onosproject.yangutils.datamodel.YangAtomicPath;
 import org.onosproject.yangutils.datamodel.YangAugment;
 import org.onosproject.yangutils.datamodel.YangLeafRef;
+import org.onosproject.yangutils.datamodel.YangModule;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
+import org.onosproject.yangutils.datamodel.YangSubModule;
 import org.onosproject.yangutils.datamodel.YangType;
 import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
@@ -46,6 +49,7 @@
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.DEFAULT_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
@@ -54,10 +58,9 @@
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.IMPL_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.INTERFACE_MASK;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.OPERATION_BUILDER_CLASS_MASK;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.OPERATION_CLASS_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ADD_TO_LIST_IMPL_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ADD_TO_LIST_INTERFACE_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ATTRIBUTES_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_FOR_TYPE_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_IMPL_MASK;
@@ -72,6 +75,7 @@
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.GETTER_FOR_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.GETTER_FOR_INTERFACE_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.HASH_CODE_IMPL_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.OF_STRING_IMPL_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.RPC_IMPL_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.RPC_INTERFACE_MASK;
@@ -79,14 +83,14 @@
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_INTERFACE_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.TO_STRING_IMPL_MASK;
 import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator.getQualifiedTypeInfoOfCurNode;
-import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.getAugmentedNodesPackage;
+import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.getNodesPackage;
 import static org.onosproject.yangutils.translator.tojava.utils.ClassDefinitionGenerator.generateClassDefinition;
 import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
 import static org.onosproject.yangutils.utils.UtilConstants.LEAFREF;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM;
 import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
-import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_ANY_STRING_ENDING_WITH_SERVICE;
 import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
 import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
 import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
@@ -98,9 +102,7 @@
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.EVENT_SUBJECT_CLASS;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.IMPL_CLASS;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.INTERFACE;
-import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OPERATION_CLASS;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.RPC_INTERFACE;
-import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.RPC_MANAGER;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
@@ -122,15 +124,14 @@
     /**
      * Returns a file object for generated file.
      *
-     * @param filePath     file package path
-     * @param fileName     file name
-     * @param extension    file extension
-     * @param baseCodePath cached file handle
+     * @param filePath  file package path
+     * @param fileName  file name
+     * @param extension file extension
+     * @param handler   cached file handle
      * @return file object
      */
-    public static File getFileObject(String filePath, String fileName, String extension, String baseCodePath) {
-
-        return new File(baseCodePath + filePath + SLASH + fileName + extension);
+    public static File getFileObject(String filePath, String fileName, String extension, JavaFileInfo handler) {
+        return new File(handler.getBaseCodeGenPath() + filePath + SLASH + fileName + extension);
     }
 
     /**
@@ -188,6 +189,18 @@
             return tempJavaFragmentFiles
                     .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getSetterImplTempFileHandle(),
                             absolutePath);
+        } else if ((generatedTempFiles & ADD_TO_LIST_INTERFACE_MASK) != 0) {
+            return tempJavaFragmentFiles
+                    .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getAddToListInterfaceTempFileHandle(),
+                            absolutePath);
+        } else if ((generatedTempFiles & ADD_TO_LIST_IMPL_MASK) != 0) {
+            return tempJavaFragmentFiles
+                    .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getAddToListImplTempFileHandle(),
+                            absolutePath);
+        } else if ((generatedTempFiles & LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK) != 0) {
+            return tempJavaFragmentFiles
+                    .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getLeafIdAttributeTempFileHandle(),
+                            absolutePath);
         } else if ((generatedTempFiles & CONSTRUCTOR_IMPL_MASK) != 0) {
             if (beanFragmentFiles == null) {
                 throw new TranslatorException("Required constructor info is missing.");
@@ -370,20 +383,13 @@
                 appendHeaderContents(file, pkgString, importsList);
                 write(file, genType, INTERFACE, curNode, className);
                 break;
-            case IMPL_CLASS_MASK:
+            case DEFAULT_CLASS_MASK:
                 appendHeaderContents(file, pkgString, importsList);
                 write(file, genType, IMPL_CLASS, curNode, className);
                 break;
-            case OPERATION_CLASS_MASK:
-                appendHeaderContents(file, pkgString, importsList);
-                write(file, genType, OPERATION_CLASS, curNode, className);
-                break;
             case BUILDER_CLASS_MASK:
                 write(file, genType, BUILDER_CLASS, curNode, className);
                 break;
-            case OPERATION_BUILDER_CLASS_MASK:
-                write(file, genType, BUILDER_CLASS, curNode, className);
-                break;
             case BUILDER_INTERFACE_MASK:
                 write(file, genType, BUILDER_INTERFACE, curNode, className);
                 break;
@@ -511,16 +517,7 @@
             throws IOException {
 
         YangPluginConfig pluginConfig = ((JavaFileInfoContainer) curNode).getJavaFileInfo().getPluginConfig();
-        if ((genType & GENERATE_SERVICE_AND_MANAGER) != 0) {
-            if (!fileName.matches(REGEX_FOR_ANY_STRING_ENDING_WITH_SERVICE)) {
-                insertDataIntoJavaFile(file, getJavaDoc(RPC_MANAGER, fileName, false, pluginConfig));
-                insertDataIntoJavaFile(file, JavaCodeSnippetGen.addComponentString());
-            } else {
-                insertDataIntoJavaFile(file, getJavaDoc(javaDocType, fileName, false, pluginConfig));
-            }
-        } else {
-            insertDataIntoJavaFile(file, getJavaDoc(javaDocType, fileName, false, pluginConfig));
-        }
+        insertDataIntoJavaFile(file, getJavaDoc(javaDocType, fileName, false, pluginConfig));
         insertDataIntoJavaFile(file, generateClassDefinition(genType, fileName, curNode));
     }
 
@@ -616,6 +613,13 @@
                     parentInfo.getPluginConfig());
             tempJavaCodeFragmentFiles.getServiceTempFiles().getJavaImportData().addImportInfo(javaQualifiedTypeInfo,
                     parentInfo.getJavaName(), parentInfo.getPackage());
+            if (augmentedNode instanceof YangModule || augmentedNode instanceof YangSubModule) {
+                javaQualifiedTypeInfo = getQualifiedTypeInfoOfAugmentedNode(augmentedNode,
+                        getCapitalCase(curNodeName) + OP_PARAM,
+                        parentInfo.getPluginConfig());
+                tempJavaCodeFragmentFiles.getServiceTempFiles().getJavaImportData().addImportInfo(javaQualifiedTypeInfo,
+                        parentInfo.getJavaName(), parentInfo.getPackage());
+            }
 
         }
     }
@@ -634,7 +638,7 @@
         JavaQualifiedTypeInfoTranslator javaQualifiedTypeInfo = getQualifiedTypeInfoOfCurNode(augmentedNode,
                 getCapitalCase(curNodeName));
         if (javaQualifiedTypeInfo.getPkgInfo() == null) {
-            javaQualifiedTypeInfo.setPkgInfo(getAugmentedNodesPackage(augmentedNode,
+            javaQualifiedTypeInfo.setPkgInfo(getNodesPackage(augmentedNode,
                     pluginConfig));
         }
         return javaQualifiedTypeInfo;
@@ -735,4 +739,5 @@
         }
         return attributeType;
     }
+
 }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
index d394568..2fec762 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
@@ -20,14 +20,16 @@
 import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.Date;
 import java.util.List;
+
 import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
-import org.onosproject.yangutils.utils.io.impl.YangIoUtils;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangToJavaNamingConflictUtil;
+import org.onosproject.yangutils.translator.exception.TranslatorException;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
 
 import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.getParentNodeInGenCode;
 import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
@@ -48,6 +50,7 @@
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getAbsolutePackagePath;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getJavaPackageFromPackagePath;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPackageDirPathFromJavaJPackage;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPrefixForIdentifier;
 
 /**
  * Represents an utility Class for translating the name from YANG to java convention.
@@ -109,14 +112,12 @@
      */
     private static String getPkgFromNameSpace(String nameSpace, YangToJavaNamingConflictUtil conflictResolver) {
 
-        ArrayList<String> pkgArr = new ArrayList<String>();
+        ArrayList<String> pkgArr = new ArrayList<>();
         nameSpace = nameSpace.replace(QUOTES, EMPTY_STRING);
         String properNameSpace = nameSpace.replaceAll(REGEX_WITH_ALL_SPECIAL_CHAR, COLAN);
         String[] nameSpaceArr = properNameSpace.split(COLAN);
 
-        for (String nameSpaceString : nameSpaceArr) {
-            pkgArr.add(nameSpaceString);
-        }
+        Collections.addAll(pkgArr, nameSpaceArr);
         return getPkgFrmArr(pkgArr, conflictResolver);
     }
 
@@ -159,7 +160,7 @@
         for (String member : pkgArr) {
             boolean presenceOfKeyword = JAVA_KEY_WORDS.contains(member.toLowerCase());
             if (presenceOfKeyword || member.matches(REGEX_FOR_FIRST_DIGIT)) {
-                String prefix = YangIoUtils.getPrefixForIdentifier(conflictResolver);
+                String prefix = getPrefixForIdentifier(conflictResolver);
                 member = prefix + member;
             }
             pkg = pkg + member;
@@ -183,10 +184,8 @@
         String[] strArray = name.split(COLAN);
         String output = EMPTY_STRING;
         if (strArray[0].isEmpty()) {
-            List<String> stringArrangement = new ArrayList<String>();
-            for (int i = 1; i < strArray.length; i++) {
-                stringArrangement.add(strArray[i]);
-            }
+            List<String> stringArrangement = new ArrayList<>();
+            stringArrangement.addAll(Arrays.asList(strArray).subList(1, strArray.length));
             strArray = stringArrangement.toArray(new String[stringArrangement.size()]);
         }
         for (int i = 0; i < strArray.length; i++) {
@@ -236,7 +235,7 @@
      * @param pkg Package to check if it is created
      * @return existence status of package
      */
-    public static boolean doesPackageExist(String pkg) {
+    static boolean doesPackageExist(String pkg) {
         File pkgDir = new File(getPackageDirPathFromJavaJPackage(pkg));
         File pkgWithFile = new File(pkgDir + SLASH + "package-info.java");
         return pkgDir.exists() && pkgWithFile.isFile();
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
index d8ba37a..2550883 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
@@ -21,12 +21,16 @@
 
 import org.onosproject.yangutils.datamodel.YangAtomicPath;
 import org.onosproject.yangutils.datamodel.YangAugmentableNode;
+import org.onosproject.yangutils.datamodel.YangIsFilterContentNodes;
 import org.onosproject.yangutils.datamodel.YangLeaf;
 import org.onosproject.yangutils.datamodel.YangLeafList;
 import org.onosproject.yangutils.datamodel.YangLeafRef;
 import org.onosproject.yangutils.datamodel.YangLeavesHolder;
+import org.onosproject.yangutils.datamodel.YangList;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangType;
+import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
+import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
@@ -34,7 +38,6 @@
 import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
 import org.onosproject.yangutils.translator.tojava.TempJavaBeanFragmentFiles;
 import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
-import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BINARY;
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BITS;
@@ -58,21 +61,17 @@
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getParentNodeNameForDataMethods;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getSetOfNodeIdentifiers;
 import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.INT_TYPE_CONFLICT;
-import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE;
-import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE_ANNOTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.ADD;
 import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.AND;
 import static org.onosproject.yangutils.utils.UtilConstants.APP_INSTANCE;
 import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
-import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
 import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
-import static org.onosproject.yangutils.utils.UtilConstants.BASE_CLASS;
 import static org.onosproject.yangutils.utils.UtilConstants.BIG_DECIMAL;
 import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
-import static org.onosproject.yangutils.utils.UtilConstants.BITSET;
 import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
 import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
+import static org.onosproject.yangutils.utils.UtilConstants.BREAK;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
 import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
@@ -87,8 +86,6 @@
 import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
 import static org.onosproject.yangutils.utils.UtilConstants.COLON;
 import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
-import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE;
-import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE_ANNOTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.DECODE;
 import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
 import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
@@ -97,37 +94,40 @@
 import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.ELSE;
 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.ENUM;
 import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
 import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
 import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
 import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
 import static org.onosproject.yangutils.utils.UtilConstants.FILTER_CONTENT_MATCH;
-import static org.onosproject.yangutils.utils.UtilConstants.FILTER_LEAF;
-import static org.onosproject.yangutils.utils.UtilConstants.FILTER_LEAF_LIST;
+import static org.onosproject.yangutils.utils.UtilConstants.FLAG;
 import static org.onosproject.yangutils.utils.UtilConstants.FOR;
 import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
 import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
 import static org.onosproject.yangutils.utils.UtilConstants.GET;
+import static org.onosproject.yangutils.utils.UtilConstants.GET_CLASS;
 import static org.onosproject.yangutils.utils.UtilConstants.GET_DECODER;
 import static org.onosproject.yangutils.utils.UtilConstants.GET_FILTER_LEAF;
-import static org.onosproject.yangutils.utils.UtilConstants.GET_FILTER_LEAF_LIST;
+import static org.onosproject.yangutils.utils.UtilConstants.GET_LEAF_INDEX;
+import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD;
 import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
-import static org.onosproject.yangutils.utils.UtilConstants.GET_OPERATION_TYPE;
-import static org.onosproject.yangutils.utils.UtilConstants.GET_SELECT_LEAF;
-import static org.onosproject.yangutils.utils.UtilConstants.GET_SELECT_LEAF_LIST;
 import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.HASH;
 import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.IF;
-import static org.onosproject.yangutils.utils.UtilConstants.ILLEGAL_ARGUMENT_EXCEPTION;
-import static org.onosproject.yangutils.utils.UtilConstants.ILLEGAL_ARGUMENT_EXCEPTION_MSG;
+import static org.onosproject.yangutils.utils.UtilConstants.ILLEGAL_ACCESS_EXCEPTION;
 import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
 import static org.onosproject.yangutils.utils.UtilConstants.INT;
 import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
 import static org.onosproject.yangutils.utils.UtilConstants.INT_MAX_RANGE;
 import static org.onosproject.yangutils.utils.UtilConstants.INT_MIN_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.INVOCATION_TARGET_EXCEPTION;
+import static org.onosproject.yangutils.utils.UtilConstants.INVOKE;
+import static org.onosproject.yangutils.utils.UtilConstants.IS_EMPTY;
+import static org.onosproject.yangutils.utils.UtilConstants.IS_SELECT_LEAF;
+import static org.onosproject.yangutils.utils.UtilConstants.LEAF_IDENTIFIER;
 import static org.onosproject.yangutils.utils.UtilConstants.LIST;
 import static org.onosproject.yangutils.utils.UtilConstants.LONG;
 import static org.onosproject.yangutils.utils.UtilConstants.LONG_MAX_RANGE;
@@ -139,6 +139,7 @@
 import static org.onosproject.yangutils.utils.UtilConstants.NEW;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
 import static org.onosproject.yangutils.utils.UtilConstants.NOT;
+import static org.onosproject.yangutils.utils.UtilConstants.NO_SUCH_METHOD_EXCEPTION;
 import static org.onosproject.yangutils.utils.UtilConstants.NULL;
 import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
 import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
@@ -147,9 +148,7 @@
 import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
 import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
-import static org.onosproject.yangutils.utils.UtilConstants.OPERATION;
-import static org.onosproject.yangutils.utils.UtilConstants.OPERATION_ENUM;
-import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM_TYPE;
+import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM;
 import static org.onosproject.yangutils.utils.UtilConstants.OR_OPERATION;
 import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
 import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
@@ -164,15 +163,12 @@
 import static org.onosproject.yangutils.utils.UtilConstants.PUT;
 import static org.onosproject.yangutils.utils.UtilConstants.QUESTION_MARK;
 import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
-import static org.onosproject.yangutils.utils.UtilConstants.RECEIVED_OBJECT;
 import static org.onosproject.yangutils.utils.UtilConstants.REPLACE_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
 import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
-import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF;
-import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF_LIST;
 import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
 import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
-import static org.onosproject.yangutils.utils.UtilConstants.SET_OPERATION_TYPE;
+import static org.onosproject.yangutils.utils.UtilConstants.SET_SELECT_LEAF;
 import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
 import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
 import static org.onosproject.yangutils.utils.UtilConstants.SINGLE_QUOTE;
@@ -180,26 +176,27 @@
 import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
 import static org.onosproject.yangutils.utils.UtilConstants.SPLIT_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.SQUARE_BRACKETS;
-import static org.onosproject.yangutils.utils.UtilConstants.STARTED_LOG_INFO;
 import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
-import static org.onosproject.yangutils.utils.UtilConstants.STOPPED_LOG_INFO;
 import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
 import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
 import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
 import static org.onosproject.yangutils.utils.UtilConstants.THIS;
-import static org.onosproject.yangutils.utils.UtilConstants.THROW;
 import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
 import static org.onosproject.yangutils.utils.UtilConstants.TO;
 import static org.onosproject.yangutils.utils.UtilConstants.TRIM_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
 import static org.onosproject.yangutils.utils.UtilConstants.TRY;
 import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_FOUR_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.UINT_MAX_RANGE;
 import static org.onosproject.yangutils.utils.UtilConstants.UINT_MIN_RANGE;
 import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MAX_RANGE;
 import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MIN_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.UNDER_SCORE;
 import static org.onosproject.yangutils.utils.UtilConstants.VALIDATE_RANGE;
 import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
+import static org.onosproject.yangutils.utils.UtilConstants.VALUE_LEAF_SET;
 import static org.onosproject.yangutils.utils.UtilConstants.VOID;
 import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
 import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_OP_PARAM_INFO;
@@ -215,7 +212,9 @@
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForAddAugmentation;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForBuilderMethod;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForGetAugmentation;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForGetMethodWithAttribute;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForValidatorMethod;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
@@ -260,6 +259,10 @@
 
         String returnType = getReturnType(attr);
         String attributeName = attr.getAttributeName();
+        if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
+            return generateForGetMethodWithAttribute(returnType)
+                    + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
+        }
 
         return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr(), pluginConfig)
                 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
@@ -297,7 +300,7 @@
      * @param pluginConfig plugin configurations
      * @return constructor string
      */
-    public static String getConstructorString(String name, YangPluginConfig pluginConfig) {
+    private static String getConstructorString(String name, YangPluginConfig pluginConfig) {
         return getJavaDoc(CONSTRUCTOR, name, false, pluginConfig);
     }
 
@@ -322,7 +325,7 @@
      * @param name attribute name
      * @return check not null string
      */
-    public static String getCheckNotNull(String name) {
+    static String getCheckNotNull(String name) {
         return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
                 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
     }
@@ -330,11 +333,15 @@
     /**
      * Returns build method string.
      *
-     * @param name class name
+     * @param name       class name
+     * @param isRootNode if root node
      * @return build string
      */
-    public static String getBuildString(String name) {
-        return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name);
+    public static String getBuildString(String name, boolean isRootNode) {
+        if (isRootNode) {
+            return NEW_LINE + getBuild(name, true);
+        }
+        return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name, false);
     }
 
     /**
@@ -346,13 +353,13 @@
      */
     public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
 
-        String attrQuaifiedType = getReturnType(attr);
+        String attrQualifiedType = getReturnType(attr);
         String attributeName = attr.getAttributeName();
 
         if (!attr.isListAttr()) {
-            return getGetter(attrQuaifiedType, attributeName, generatedJavaFiles);
+            return getGetter(attrQualifiedType, attributeName, generatedJavaFiles);
         }
-        String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
+        String listAttr = getListString() + attrQualifiedType + DIAMOND_CLOSE_BRACKET;
         return getGetter(listAttr, attributeName, generatedJavaFiles);
     }
 
@@ -364,7 +371,7 @@
      * @param generatedJavaFiles generated java files
      * @return getter for attribute
      */
-    public static String getGetter(String type, String name, int generatedJavaFiles) {
+    static String getGetter(String type, String name, int generatedJavaFiles) {
         String ret = parseTypeForReturnValue(type);
         if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
             return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCapitalCase(name)
@@ -406,24 +413,31 @@
      */
     public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
 
-        String attrQuaifiedType = getReturnType(attr);
+        String attrQualifiedType = getReturnType(attr);
         String attributeName = attr.getAttributeName();
-        if (!attr.isListAttr()) {
-            return getSetter(className, attributeName, attrQuaifiedType, generatedJavaFiles);
+        boolean isTypeNull = false;
+        if (attr.getAttributeType() == null) {
+            isTypeNull = true;
         }
-        String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
-        return getSetter(className, attributeName, listAttr, generatedJavaFiles);
+        if (!attr.isListAttr()) {
+            return getSetter(className, attributeName, attrQualifiedType, generatedJavaFiles, isTypeNull, false);
+        }
+        String listAttr = getListString() + attrQualifiedType + DIAMOND_CLOSE_BRACKET;
+        return getSetter(className, attributeName, listAttr, generatedJavaFiles, isTypeNull, true);
     }
 
     /**
      * Returns setter for attribute.
      *
-     * @param className class name
-     * @param name      attribute name
-     * @param type      return type
+     * @param className  class name
+     * @param name       attribute name
+     * @param type       return type
+     * @param isTypeNull if attribute type is null
+     * @param isList     true if leaf-list
      * @return setter for attribute
      */
-    private static String getSetter(String className, String name, String type, int generatedJavaFiles) {
+    private static String getSetter(String className, String name, String type, int generatedJavaFiles,
+                                    boolean isTypeNull, boolean isList) {
         if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
             return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
                     + getCapitalCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
@@ -435,12 +449,25 @@
                     + THIS + PERIOD + name + SPACE + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE
                     + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
         } else {
-            return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
+            String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
                     name + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
-                    + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE
+                    + OPEN_CURLY_BRACKET;
+            if (!isTypeNull && !isList) {
+                method = method + getValueLeafSetString(name);
+            } else {
+                method = method + EMPTY_STRING;
+            }
+            return method + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS +
+                    PERIOD + name + SPACE
                     + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE
                     + THIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
         }
+
+    }
+
+    //Returns value leaf flag setter.
+    private static String getValueLeafSetString(String name) {
+        return "\n        get_valueLeafFlags().set(LeafIdentifier." + name.toUpperCase() + ".getLeafIndex());";
     }
 
     /**
@@ -449,11 +476,11 @@
      * @param attr attribute info
      * @return setter method for class
      */
-    public static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
+    static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
 
-        String attrQuaifiedType = getReturnType(attr);
+        String attrQualifiedType = getReturnType(attr);
         String attributeName = attr.getAttributeName();
-        return getTypeDefSetter(attrQuaifiedType, attributeName);
+        return getTypeDefSetter(attrQualifiedType, attributeName);
     }
 
     /**
@@ -466,8 +493,8 @@
     private static String getTypeDefSetter(String type, String name) {
         return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(name)
                 + OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
-                + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE
-                + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+                + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN +
+                NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
     }
 
     /**
@@ -488,8 +515,8 @@
      * @param generatedJavaFiles generated java files
      * @return getter method for interface
      */
-    public static String getGetterForInterface(String yangName, String returnType, boolean isList,
-                                               int generatedJavaFiles) {
+    static String getGetterForInterface(String yangName, String returnType, boolean isList,
+                                        int generatedJavaFiles) {
 
         if (!isList) {
             return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
@@ -508,8 +535,7 @@
     private static String getGetterInterfaceString(String returnType, String yangName,
                                                    int generatedJavaFiles) {
         if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
-            return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
-                    + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
+            return getGetMethodWithArgument(returnType, yangName);
         } else {
             return FOUR_SPACE_INDENTATION + returnType + SPACE + yangName
                     + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
@@ -526,8 +552,8 @@
      * @param generatedJavaFiles generated java files
      * @return setter method for interface
      */
-    public static String getSetterForInterface(String attrName, String attrType, String className,
-                                               boolean isList, int generatedJavaFiles) {
+    static String getSetterForInterface(String attrName, String attrType, String className,
+                                        boolean isList, int generatedJavaFiles) {
 
         if (!isList) {
             return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
@@ -547,7 +573,6 @@
     private static String getSetterInterfaceString(String className, String attrName, String attrType,
                                                    int generatedJavaFiles) {
         if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
-
             return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
                     + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
         } else {
@@ -587,7 +612,7 @@
      * @param yangName name of the interface
      * @return build method for interface
      */
-    public static String getBuildForInterface(String yangName) {
+    static String getBuildForInterface(String yangName) {
         return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
                 + NEW_LINE;
     }
@@ -597,34 +622,24 @@
      *
      * @param yangName     class name
      * @param pluginConfig plugin configurations
+     * @param isRootNode   if root node
      * @return constructor string
      */
-    public static String getConstructorStart(String yangName, YangPluginConfig pluginConfig) {
+    static String getConstructorStart(String yangName, YangPluginConfig pluginConfig, boolean isRootNode) {
 
         String javadoc = getConstructorString(yangName, pluginConfig);
-        String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + getCapitalCase(DEFAULT) + yangName +
+
+        String returnType = getCapitalCase(DEFAULT) + yangName;
+        if (isRootNode) {
+            returnType = yangName + OP_PARAM;
+        }
+        String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + returnType +
                 OPEN_PARENTHESIS + yangName + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT
                 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
         return javadoc + constructor;
     }
 
     /**
-     * Returns constructor string for op param class.
-     *
-     * @param yangName     class name
-     * @param pluginConfig plugin configurations
-     * @return constructor string
-     */
-    public static String getOpParamConstructorStart(String yangName, YangPluginConfig pluginConfig) {
-
-        String javadoc = getConstructorString(yangName, pluginConfig);
-        String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + OPERATION +
-                OPEN_PARENTHESIS + yangName + OPERATION + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT
-                + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
-        return javadoc + constructor;
-    }
-
-    /**
      * Returns the constructor strings for class file.
      *
      * @param attr               attribute info
@@ -706,13 +721,19 @@
     /**
      * Returns the build method strings for class file.
      *
-     * @param yangName class name
+     * @param yangName   class name
+     * @param isRootNode if root node
      * @return build method string for class
      */
-    public static String getBuild(String yangName) {
-        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
+    static String getBuild(String yangName, boolean isRootNode) {
+        String type = getCapitalCase(DEFAULT) + yangName;
+        if (isRootNode) {
+            type = yangName + OP_PARAM;
+        }
+        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS +
+                CLOSE_PARENTHESIS
                 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE +
-                getCapitalCase(DEFAULT) + yangName + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN
+                type + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN
                 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
     }
 
@@ -733,170 +754,13 @@
      *
      * @return string method's open string
      */
-    public static String getToStringMethodOpen() {
+    static String getToStringMethodOpen() {
         return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STRING_DATA_TYPE + SPACE + TO
                 + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
                 + EIGHT_SPACE_INDENTATION + RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
     }
 
     /**
-     * Returns to string leaf for get method.
-     *
-     * @return string leaf for get method
-     */
-    public static String getToStringLeafgetter() {
-        return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_FILTER_LEAF
-                + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
-                + EIGHT_SPACE_INDENTATION + RETURN + SPACE + FILTER_LEAF + SEMI_COLAN + NEW_LINE
-                + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
-    }
-
-    /**
-     * Returns to string select leaf for get method.
-     *
-     * @return select leaf string for get method
-     */
-    public static String getToStringSelectLeafgetter() {
-        return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_SELECT_LEAF
-                + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
-                + EIGHT_SPACE_INDENTATION + RETURN + SPACE + SELECT_LEAF + SEMI_COLAN + NEW_LINE
-                + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
-    }
-
-    /**
-     * Returns to string leaf list for get method.
-     *
-     * @return string leaf list for get method
-     */
-    public static String getToStringLeafListgetter() {
-        return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_FILTER_LEAF_LIST
-                + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
-                + EIGHT_SPACE_INDENTATION + RETURN + SPACE + FILTER_LEAF_LIST + SEMI_COLAN + NEW_LINE
-                + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
-    }
-
-    /**
-     * Returns to string select leaf list for get.
-     *
-     * @return select leaf list list for get
-     */
-    public static String getToStringSelectLeafListgetter() {
-        return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_SELECT_LEAF_LIST
-                + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
-                + EIGHT_SPACE_INDENTATION + RETURN + SPACE + SELECT_LEAF_LIST + SEMI_COLAN + NEW_LINE
-                + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
-    }
-
-    /**
-     * Returns to string operation type for get method.
-     *
-     * @return operation type for get method
-     */
-    public static String getOperationTypegetter() {
-        return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + OPERATION_ENUM
-                + SPACE + GET_OPERATION_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
-                + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE
-                + OP_PARAM_TYPE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
-    }
-
-    /**
-     * Returns to string operation type for set.
-     *
-     * @return operation type set method
-     */
-    public static String getOperationTypeSetter() {
-        return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_OPERATION_TYPE
-                + OPEN_PARENTHESIS + OPERATION_ENUM + SPACE + getSmallCase(OPERATION_ENUM) + CLOSE_PARENTHESIS
-                + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
-                + OP_PARAM_TYPE + SPACE + EQUAL + SPACE + getSmallCase(OPERATION_ENUM) + SEMI_COLAN + NEW_LINE
-                + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
-    }
-
-    /**
-     * Returns string for leaf set method.
-     *
-     * @param className    class name
-     * @param curnode      current YANG node
-     * @param pluginConfig plugin configurations
-     * @return string for leaf set method
-     */
-    public static String getSetterForLeaf(String className, YangNode curnode, YangPluginConfig pluginConfig) {
-
-        int numleaf = 1;
-        String filterMethod = "";
-        TempJavaBeanFragmentFiles tempFragmentFiles = ((JavaCodeGeneratorInfo) curnode)
-                .getTempJavaCodeFragmentFiles().getBeanTempFiles();
-        if (curnode instanceof YangLeavesHolder) {
-            YangLeavesHolder leavesHolder = (YangLeavesHolder) curnode;
-            List<YangLeaf> leaves = leavesHolder.getListOfLeaf();
-            if (leaves !=  null && !leaves.isEmpty()) {
-                for (YangLeaf leaf : leaves) {
-                    JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeaf(tempFragmentFiles, leaf, pluginConfig);
-                    String attrQuaifiedType = getReturnType(javaAttributeInfo);
-                    String attributeName = javaAttributeInfo.getAttributeName();
-
-                    filterMethod = filterMethod + NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE
-                            + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE
-                            + attributeName + OPEN_PARENTHESIS + attrQuaifiedType
-                            + SPACE + RECEIVED_OBJECT + attributeName + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
-                            + NEW_LINE + EIGHT_SPACE_INDENTATION + attributeName + SPACE + EQUAL + SPACE
-                            + RECEIVED_OBJECT + attributeName + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
-                            + GET_FILTER_LEAF + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + SET_METHOD_PREFIX
-                            + OPEN_PARENTHESIS + String.valueOf(numleaf) + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
-                            + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS + SEMI_COLAN + NEW_LINE
-                            + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
-                    numleaf++;
-                }
-            }
-        }
-        return filterMethod;
-    }
-
-    /**
-     * Returns string for leaf list set method.
-     *
-     * @param className    class name
-     * @param curnode      current YANG node
-     * @param pluginConfig plugin configurations
-     * @return string for leaf list set method
-     */
-    public static String getSetterForLeafList(String className, YangNode curnode, YangPluginConfig pluginConfig) {
-
-        int numleaf = 1;
-        String filterMethod = "";
-        TempJavaBeanFragmentFiles tempFragmentFiles = ((JavaCodeGeneratorInfo) curnode)
-                .getTempJavaCodeFragmentFiles().getBeanTempFiles();
-        if (curnode instanceof YangLeavesHolder) {
-            YangLeavesHolder leavesHolder = (YangLeavesHolder) curnode;
-            List<YangLeafList> listOfLeafList = leavesHolder.getListOfLeafList();
-
-            if (listOfLeafList !=  null && !listOfLeafList.isEmpty()) {
-                for (YangLeafList leafList : listOfLeafList) {
-                    JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeafList(tempFragmentFiles, leafList,
-                            pluginConfig);
-                    String attributeName = javaAttributeInfo.getAttributeName();
-                    String attrQuaifiedType = getReturnType(javaAttributeInfo);
-                    if (javaAttributeInfo.isListAttr()) {
-                        attrQuaifiedType = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
-                    }
-                    filterMethod = filterMethod + NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE
-                            + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE
-                            + attributeName + OPEN_PARENTHESIS + attrQuaifiedType
-                            + SPACE + RECEIVED_OBJECT + attributeName + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
-                            + NEW_LINE + EIGHT_SPACE_INDENTATION + attributeName + SPACE + EQUAL + SPACE
-                            + RECEIVED_OBJECT + attributeName + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
-                            + GET_FILTER_LEAF_LIST + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + SET_METHOD_PREFIX
-                            + OPEN_PARENTHESIS + String.valueOf(numleaf) + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
-                            + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS + SEMI_COLAN + NEW_LINE
-                            + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
-                    numleaf++;
-                }
-            }
-        }
-        return filterMethod;
-    }
-
-    /**
      * Returns whether the data type is of primitive data type.
      *
      * @param dataType data type to be checked
@@ -923,7 +787,7 @@
                 + CLOSE_PARENTHESIS;
     }
 
-    private static String getAttrTypeForFilterContentMatchWhenNonPremitiveDatatype(String attributeName) {
+    private static String getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(String attributeName) {
         return APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
                 + SPACE + EQUAL + EQUAL + SPACE + NULL + SPACE + OR_OPERATION + SPACE
                 + NOT + OPEN_PARENTHESIS + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
@@ -933,7 +797,7 @@
     }
 
     private static String getIfFilterContentMatchMethodImpl(String attributeName,
-                                                            String filterMethod, int numleaf, YangType dataType) {
+                                                            YangType dataType) {
         String attrQualifiedType;
 
         if (isPrimitiveDataType(dataType.getDataType())) {
@@ -943,10 +807,10 @@
             if (isPrimitiveDataType(type.getDataType())) {
                 attrQualifiedType = getAttrTypeForFilterContentMatchWhenPrimitiveDataType(attributeName);
             } else {
-                attrQualifiedType = getAttrTypeForFilterContentMatchWhenNonPremitiveDatatype(attributeName);
+                attrQualifiedType = getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(attributeName);
             }
         } else {
-            attrQualifiedType = getAttrTypeForFilterContentMatchWhenNonPremitiveDatatype(attributeName);
+            attrQualifiedType = getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(attributeName);
         }
 
         return attrQualifiedType;
@@ -955,27 +819,21 @@
     /**
      * Returns string for is filter content match method.
      *
-     * @param className    class name
      * @param curNode      current YANG node
      * @param pluginConfig plugin configurations
      * @return string for is filter content match method
      */
-    public static String getIsFilterContentMatch(String className, YangNode curNode, YangPluginConfig pluginConfig) {
+    static String getIsFilterContentMatch(YangNode curNode, YangPluginConfig pluginConfig) {
 
-        int numLeaf = 1;
-        String filterMethod = "";
+        String filterMethod = getOverRideString();
         TempJavaBeanFragmentFiles tempFragmentFiles = ((JavaCodeGeneratorInfo) curNode)
                 .getTempJavaCodeFragmentFiles().getBeanTempFiles();
+        JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
         if (curNode instanceof YangLeavesHolder) {
-            filterMethod = NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE
-                    + SPACE + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS + getCapitalCase(OBJECT)
-                    + SPACE + OBJ +
-                    CLOSE_PARENTHESIS + SPACE
+            filterMethod = filterMethod + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE
+                    + SPACE + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS + getCapitalCase(javaFileInfo.getJavaName())
+                    + SPACE + APP_INSTANCE + CLOSE_PARENTHESIS + SPACE
                     + OPEN_CURLY_BRACKET + NEW_LINE;
-            filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + getCapitalCase(DEFAULT)
-                    + getCapitalCase(className) + SPACE + APP_INSTANCE + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS +
-                    getCapitalCase(DEFAULT) + getCapitalCase(className) + CLOSE_PARENTHESIS + OBJ +
-                    SEMI_COLAN + NEW_LINE;
             if (curNode instanceof YangAugmentableNode) {
                 filterMethod = filterMethod + getAugmentableOpParamSyntax();
             }
@@ -990,39 +848,46 @@
                             pluginConfig);
                     String attributeName = javaAttributeInfo.getAttributeName();
                     attrQualifiedType = getIfFilterContentMatchMethodImpl(attributeName,
-                            filterMethod, numLeaf, leaf.getDataType());
+                            leaf.getDataType());
                     filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS
                             + GET_FILTER_LEAF + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + GET_METHOD_PREFIX
-                            + OPEN_PARENTHESIS + String.valueOf(numLeaf) + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
+                            + OPEN_PARENTHESIS + LEAF_IDENTIFIER + PERIOD + attributeName.toUpperCase() + PERIOD +
+                            GET_LEAF_INDEX
+                            + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
                             + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE
                             + OPEN_PARENTHESIS + attrQualifiedType + CLOSE_PARENTHESIS + SPACE
                             + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE
                             + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE
-                            + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
-
-                    numLeaf++;
+                            + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE;
                 }
             }
 
             if (listOfLeafList != null) {
-                numLeaf = 1;
                 for (YangLeafList leafList : listOfLeafList) {
                     JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeafList(tempFragmentFiles, leafList,
                             pluginConfig);
                     String attributeName = javaAttributeInfo.getAttributeName();
-                    attrQualifiedType = getIfFilterContentMatchMethodImpl(
-                            attributeName, filterMethod, numLeaf, leafList.getDataType());
-                    filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS
-                            + GET_FILTER_LEAF_LIST + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + GET_METHOD_PREFIX
-                            + OPEN_PARENTHESIS + String.valueOf(numLeaf) + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
-                            + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE
-                            + OPEN_PARENTHESIS + attrQualifiedType + CLOSE_PARENTHESIS + SPACE
-                            + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE
-                            + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE
-                            + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
-                    numLeaf++;
+                    filterMethod = filterMethod + getIsFileContentMatchForLists(getCapitalCase(attributeName), true,
+                            javaAttributeInfo.getImportInfo().getClassInfo());
                 }
             }
+            YangNode tempNode = curNode.getChild();
+            JavaFileInfo fileInfo;
+            String name;
+            while (tempNode != null) {
+                if (tempNode instanceof YangIsFilterContentNodes) {
+                    fileInfo = ((JavaFileInfoContainer) tempNode).getJavaFileInfo();
+                    name = getCapitalCase(fileInfo.getJavaName());
+                    if (tempNode instanceof YangList) {
+                        filterMethod = filterMethod +
+                                getIsFileContentMatchForLists(name, false, null);
+                    } else {
+
+                        filterMethod = filterMethod + getIsFilerContentMatchForChildNode(name);
+                    }
+                }
+                tempNode = tempNode.getNextSibling();
+            }
 
             filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + RETURN + SPACE + TRUE + SEMI_COLAN +
                     NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
@@ -1031,57 +896,138 @@
         return filterMethod;
     }
 
-    /*Returns method string for op parms augmented syntax*/
+    /**
+     * Returns filter content match for child nodes.
+     *
+     * @param name name of node
+     * @return filter content match for child nodes
+     */
+    private static String getIsFilerContentMatchForChildNode(String name) {
+        name = getSmallCase(name);
+        String method = EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + name + OPEN_PARENTHESIS +
+                CLOSE_PARENTHESIS + SPACE + NOT + EQUAL + SPACE + NULL + CLOSE_PARENTHESIS + SPACE +
+                OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + APP_INSTANCE
+                + PERIOD + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + EQUAL
+                + EQUAL + SPACE + NULL + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
+                SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + NEW_LINE + TWELVE_SPACE_INDENTATION +
+                CLOSE_CURLY_BRACKET + NEW_LINE;
+        return method + TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + name + OPEN_PARENTHESIS +
+                CLOSE_PARENTHESIS + PERIOD + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD + name +
+                OPEN_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
+                OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + SEMI_COLAN +
+                NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
+                + CLOSE_CURLY_BRACKET + NEW_LINE;
+    }
+
+    /**
+     * Returns filter content match for list types.
+     *
+     * @param name       name of node
+     * @param isLeafList if for leaf list
+     * @param type       type of the attribute
+     * @return filter content match for list types
+     */
+    private static String getIsFileContentMatchForLists(String name, boolean isLeafList, String type) {
+        String method = EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + getSmallCase(name) + OPEN_PARENTHESIS
+                + CLOSE_PARENTHESIS + SPACE + NOT + EQUAL + SPACE + NULL + SPACE + AND + AND + SPACE + NOT +
+                getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + IS_EMPTY +
+                CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
+                + NEW_LINE;
+        method = method + TWELVE_SPACE_INDENTATION + IF + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD + getSmallCase(name)
+                + OPEN_PARENTHESIS
+                + CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + SPACE + NULL + SPACE + "||" + SPACE +
+                getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + IS_EMPTY + CLOSE_PARENTHESIS +
+                SPACE + OPEN_CURLY_BRACKET
+                + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE +
+                TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
+        if (isLeafList) {
+            if (type.equals(getSmallCase(STRING_DATA_TYPE))) {
+                type = STRING_DATA_TYPE;
+            }
+            method = method + TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + type + SPACE +
+                    getSmallCase(name)
+                    + SPACE + COLAN + SPACE + getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
+                    CLOSE_PARENTHESIS
+                    + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE +
+                    FLAG + SPACE + EQUAL + SPACE + FALSE + SEMI_COLAN + NEW_LINE;
+            method = method + SIXTEEN_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + type + SPACE +
+                    UNDER_SCORE + getSmallCase(name)
+                    + SPACE + COLAN + SPACE + APP_INSTANCE + PERIOD + getSmallCase(name) + OPEN_PARENTHESIS
+                    + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+            method = method + TWENTY_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + getSmallCase(name) + PERIOD;
+        } else {
+            method = method + TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + name + SPACE +
+                    getSmallCase(name)
+                    + SPACE + COLAN + SPACE + getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
+                    CLOSE_PARENTHESIS
+                    + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE +
+                    FLAG + SPACE + EQUAL + SPACE + FALSE + SEMI_COLAN + NEW_LINE;
+            method = method + SIXTEEN_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + name + SPACE +
+                    UNDER_SCORE + getSmallCase(name)
+                    + SPACE + COLAN + SPACE + APP_INSTANCE + PERIOD + getSmallCase(name) + OPEN_PARENTHESIS
+                    + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+            method = method + TWENTY_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + getSmallCase(name) + PERIOD;
+        }
+        if (!isLeafList) {
+            method = method + FILTER_CONTENT_MATCH;
+        } else {
+            method = method + EQUALS_STRING;
+        }
+        method = method + OPEN_PARENTHESIS + UNDER_SCORE + getSmallCase(name) + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
+                + SPACE +
+                OPEN_CURLY_BRACKET + NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION + FLAG + SPACE + EQUAL + SPACE + TRUE +
+                SEMI_COLAN
+                + NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION + BREAK + SEMI_COLAN + NEW_LINE + TWENTY_SPACE_INDENTATION
+                + CLOSE_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
+
+        method = method + SIXTEEN_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + FLAG + SPACE + EQUAL + EQUAL
+                + SPACE + FALSE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWENTY_SPACE_INDENTATION
+                + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
+                NEW_LINE;
+        return method + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
+                CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE;
+
+    }
+
+    //Returns method string for op params augmented syntax
     private static String getAugmentableOpParamSyntax() {
-        return EIGHT_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + YANG_AUGMENTED_INFO + SPACE +
+        return EIGHT_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + OBJECT_STRING + SPACE +
                 getSmallCase(YANG_AUGMENTED_INFO) + SPACE + COLAN + SPACE + THIS +
-                PERIOD + GET_METHOD_PREFIX + YANG_AUGMENTED_INFO + MAP + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD
+                PERIOD + getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD
                 + VALUE + "s" + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
-                NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + NOT + OPEN_PARENTHESIS +
-                getSmallCase(YANG_AUGMENTED_INFO) + SPACE + INSTANCE_OF + SPACE + YANG_AUGMENTED_OP_PARAM_INFO +
-                CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
-                SIXTEEN_SPACE_INDENTATION + THROW + SPACE + NEW + SPACE + ILLEGAL_ARGUMENT_EXCEPTION +
-                OPEN_PARENTHESIS +
-                ILLEGAL_ARGUMENT_EXCEPTION_MSG + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION +
-                CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE + TWELVE_SPACE_INDENTATION + YANG_AUGMENTED_INFO + SPACE +
+                NEW_LINE + TWELVE_SPACE_INDENTATION + OBJECT_STRING + SPACE +
                 getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO) + SPACE + EQUAL + SPACE + APP_INSTANCE + PERIOD +
-                GET_METHOD_PREFIX + AUGMENTED_INFO + OPEN_PARENTHESIS + OPEN_PARENTHESIS + OPEN_PARENTHESIS +
-                YANG_AUGMENTED_OP_PARAM_INFO + CLOSE_PARENTHESIS + SPACE + getSmallCase(YANG_AUGMENTED_INFO) +
-                CLOSE_PARENTHESIS + PERIOD + GET_METHOD_PREFIX + BASE_CLASS + CLOSE_PARENTHESIS + SEMI_COLAN +
-                NEW_LINE + TWELVE_SPACE_INDENTATION + IF + OPEN_PARENTHESIS + NOT +
-                OPEN_PARENTHESIS + OPEN_PARENTHESIS + YANG_AUGMENTED_OP_PARAM_INFO + CLOSE_PARENTHESIS + SPACE +
-                getSmallCase(YANG_AUGMENTED_INFO) + CLOSE_PARENTHESIS
-                + PERIOD + "isFilterContentMatch" + OPEN_PARENTHESIS +
-                getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO) + CLOSE_PARENTHESIS +
-                CLOSE_PARENTHESIS +
+                getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD + GET_CLASS +
+                CLOSE_PARENTHESIS + SEMI_COLAN +
+                NEW_LINE + TWELVE_SPACE_INDENTATION
+                + BOOLEAN_DATA_TYPE + SPACE + FILTER_CONTENT_MATCH + SPACE + EQUAL + SPACE + FALSE + SEMI_COLAN
+                + NEW_LINE + TWELVE_SPACE_INDENTATION + TRY + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
+                SIXTEEN_SPACE_INDENTATION +
+                FILTER_CONTENT_MATCH + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS
+                + BOOLEAN_DATA_TYPE + CLOSE_PARENTHESIS + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + PERIOD +
+                GET_CLASS + NEW_LINE + TWENTY_SPACE_INDENTATION + PERIOD + GET_METHOD
+                + OPEN_PARENTHESIS + QUOTES + FILTER_CONTENT_MATCH + QUOTES + COMMA + SPACE + OBJECT_STRING + PERIOD
+                + CLASS + CLOSE_PARENTHESIS + PERIOD + INVOKE + OPEN_PARENTHESIS + getSmallCase(YANG_AUGMENTED_INFO) +
+                NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION + PERIOD + GET_CLASS + COMMA + SPACE +
+                getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO)
+                + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
+                + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE + CATCH + OPEN_PARENTHESIS
+                + NO_SUCH_METHOD_EXCEPTION + " | " + INVOCATION_TARGET_EXCEPTION + " | " + ILLEGAL_ACCESS_EXCEPTION +
+                SPACE + EXCEPTION_VAR + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
+                + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
+                + CLOSE_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION
+                + IF + OPEN_PARENTHESIS + NOT + FILTER_CONTENT_MATCH + CLOSE_PARENTHESIS +
                 SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE +
                 SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
                 + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
     }
 
-    /**
-     * Returns implementation of get base class method for op param files.
-     *
-     * @param baseClassName base class name
-     * @return implementation of get base class method for op param files
-     */
-    public static String getBaseClassMethodImpl(String baseClassName) {
-        return NEW_LINE + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + CLASS_STRING +
-                DIAMOND_OPEN_BRACKET +
-                QUESTION_MARK +
-                DIAMOND_CLOSE_BRACKET + SPACE + GET_METHOD_PREFIX + BASE_CLASS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
-                EIGHT_SPACE_INDENTATION + RETURN + SPACE + baseClassName + PERIOD + CLASS + SEMI_COLAN + NEW_LINE +
-                FOUR_SPACE_INDENTATION +
-                CLOSE_CURLY_BRACKET;
-
-    }
-
     /*
-     * Retruns omit null value string.
+     * Returns omit null value string.
      *
      * @return omit null value string
      */
-    public static String getOmitNullValueString() {
+    static String getOmitNullValueString() {
         return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
     }
 
@@ -1090,7 +1036,7 @@
      *
      * @return to string method close string
      */
-    public static String getToStringMethodClose() {
+    static String getToStringMethodClose() {
         return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
                 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
     }
@@ -1115,7 +1061,7 @@
      * @param pluginConfig plugin configurations
      * @return from string method's open string
      */
-    public static String getFromStringMethodSignature(String className, YangPluginConfig pluginConfig) {
+    static String getFromStringMethodSignature(String className, YangPluginConfig pluginConfig) {
         return getJavaDoc(FROM_METHOD, className, false, pluginConfig) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
                 + STATIC + SPACE + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS
                 + STRING_DATA_TYPE + SPACE + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE
@@ -1127,7 +1073,7 @@
      *
      * @return from string method's close string
      */
-    public static String getFromStringMethodClose() {
+    static String getFromStringMethodClose() {
         return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
                 CLOSE_CURLY_BRACKET + NEW_LINE;
     }
@@ -1153,7 +1099,7 @@
      *
      * @return sub string with try statement for union's from string method
      */
-    public static String getTrySubString() {
+    private static String getTrySubString() {
         return TRY + SPACE + OPEN_CURLY_BRACKET;
     }
 
@@ -1162,7 +1108,7 @@
      *
      * @return sub string with return statement for union's from string method
      */
-    public static String getReturnOfSubString() {
+    private static String getReturnOfSubString() {
         return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
     }
 
@@ -1171,7 +1117,7 @@
      *
      * @return sub string with catch statement for union's from string method
      */
-    public static String getCatchSubString() {
+    private static String getCatchSubString() {
         return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
                 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
     }
@@ -1227,10 +1173,11 @@
      *
      * @return hash code method open string
      */
-    public static String getHashCodeMethodOpen() {
+    static String getHashCodeMethodOpen() {
         return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
-                + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
-                + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS;
+                + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
+                EIGHT_SPACE_INDENTATION
+                + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS + SPACE;
     }
 
     /**
@@ -1239,10 +1186,11 @@
      * @param hashcodeString hash code string
      * @return to hash code method close string
      */
-    public static String getHashCodeMethodClose(String hashcodeString) {
+    static String getHashCodeMethodClose(String hashcodeString) {
         hashcodeString = trimAtLast(hashcodeString, COMMA);
         hashcodeString = trimAtLast(hashcodeString, SPACE);
-        return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
+        return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
+                CLOSE_CURLY_BRACKET
                 + NEW_LINE;
     }
 
@@ -1262,8 +1210,9 @@
      * @param className class name
      * @return equals method open string
      */
-    public static String getEqualsMethodOpen(String className) {
-        return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE + EQUALS_STRING
+    static String getEqualsMethodOpen(String className) {
+        return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE +
+                EQUALS_STRING
                 + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
                 + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
     }
@@ -1298,7 +1247,7 @@
      * @param equalMethodString equal method string
      * @return equals method close string
      */
-    public static String getEqualsMethodClose(String equalMethodString) {
+    static String getEqualsMethodClose(String equalMethodString) {
         equalMethodString = trimAtLast(equalMethodString, AND);
         equalMethodString = trimAtLast(equalMethodString, AND);
         equalMethodString = trimAtLast(equalMethodString, SPACE);
@@ -1329,7 +1278,7 @@
      * @param attr attribute info
      * @return of method string
      */
-    public static String getOfMethod(String name, JavaAttributeInfo attr) {
+    static String getOfMethod(String name, JavaAttributeInfo attr) {
 
         String attrQualifiedType = getReturnType(attr);
 
@@ -1399,7 +1348,7 @@
      * @param generatedJavaClassName class name
      * @param pluginConfig           plugin config
      * @param type                   conflict validate type
-     * @param addFirst               whether int came first or uint came first
+     * @param addFirst               whether int came first or uInt came first
      * @return string and java doc for constructor of type class
      */
     public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr1, JavaAttributeInfo
@@ -1460,7 +1409,7 @@
             name1 = attr2;
             name2 = attr1;
         }
-        constructor = constructor + ifConditionForIntInTypeDefConstrcutor(validatorType, addInt) +
+        constructor = constructor + ifConditionForIntInTypeDefConstructor(validatorType, addInt) +
                 TWELVE_SPACE_INDENTATION + THIS + PERIOD
                 + name1 + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
                 + CLOSE_CURLY_BRACKET + SPACE + ELSE + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION
@@ -1473,13 +1422,24 @@
     }
 
     /**
+     * Returns interface of add augmentation.
+     *
+     * @return interface of add augmentation
+     */
+    static String getAddAugmentInfoMethodInterface() {
+        return generateForAddAugmentation() + FOUR_SPACE_INDENTATION + VOID + SPACE +
+                ADD_STRING + YANG_AUGMENTED_INFO + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + VALUE + COMMA +
+                SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+    }
+
+    /**
      * Returns implementation of add augmentation.
      *
      * @return implementation of add augmentation
      */
     static String getAddAugmentInfoMethodImpl() {
-        return NEW_LINE + generateForAddAugmentation() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE +
-                ADD_STRING + AUGMENTED_INFO + OPEN_PARENTHESIS + YANG_AUGMENTED_INFO + SPACE + VALUE + COMMA +
+        return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE +
+                ADD_STRING + YANG_AUGMENTED_INFO + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + VALUE + COMMA +
                 SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
                 NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + PUT +
                 OPEN_PARENTHESIS + CLASS + OBJECT_STRING + COMMA + SPACE + VALUE +
@@ -1488,15 +1448,25 @@
     }
 
     /**
-     * Returns implementation of get augment info.
+     * Returns interface of get YANG augment info.
      *
-     * @return implementation of get augment info
+     * @return interface of get YANG augment info
      */
-    static String getAugmentInfoImpl() {
+    static String getYangAugmentInfoInterface() {
+        return generateForGetAugmentation() + FOUR_SPACE_INDENTATION + OBJECT_STRING + SPACE +
+                getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
+                CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+    }
 
-        return generateForGetAugmentation() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
-                YANG_AUGMENTED_INFO + SPACE + GET_METHOD_PREFIX +
-                AUGMENTED_INFO + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
+    /**
+     * Returns implementation of get YANG augment info.
+     *
+     * @return implementation of get YANG augment info
+     */
+    static String getYangAugmentInfoImpl() {
+        return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
+                OBJECT_STRING + SPACE +
+                getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
                 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
                 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + GET + OPEN_PARENTHESIS + CLASS +
                 OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
@@ -1504,17 +1474,29 @@
     }
 
     /**
-     * Returns implementation of get augment info.
+     * Returns implementation of get YANG augment info.
      *
-     * @return implementation of get augment info
+     * @return implementation of get YANG augment info
      */
-    static String getAugmentInfoMapImpl(YangPluginConfig pluginConfig) {
-
+    static String getYangAugmentInfoMapInterface(YangPluginConfig pluginConfig) {
         return getJavaDoc(GETTER_METHOD, getSmallCase(YANG_AUGMENTED_INFO) + MAP, false, pluginConfig)
+                + FOUR_SPACE_INDENTATION + MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET +
+                QUESTION_MARK + DIAMOND_CLOSE_BRACKET + COMMA + SPACE + OBJECT_STRING + DIAMOND_CLOSE_BRACKET +
+                SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS +
+                CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+    }
+
+    /**
+     * Returns implementation of get YANG augment info.
+     *
+     * @return implementation of get YANG augment info
+     */
+    static String getYangAugmentInfoMapImpl() {
+        return getOverRideString()
                 + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
                 MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET + QUESTION_MARK +
-                DIAMOND_CLOSE_BRACKET + COMMA + SPACE + YANG_AUGMENTED_INFO + DIAMOND_CLOSE_BRACKET + SPACE +
-                GET_METHOD_PREFIX + YANG_AUGMENTED_INFO + MAP + OPEN_PARENTHESIS +
+                DIAMOND_CLOSE_BRACKET + COMMA + SPACE + OBJECT_STRING + DIAMOND_CLOSE_BRACKET + SPACE +
+                getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS +
                 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
                 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + SEMI_COLAN + NEW_LINE
                 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
@@ -1526,7 +1508,7 @@
      * @param className enum's class name
      * @return enum's constructor
      */
-    public static String getEnumsConstructor(String className) {
+    static String getEnumsConstructor(String className) {
         return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
                 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
                 + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
@@ -1542,9 +1524,9 @@
      * @param pluginConfig plugin configurations
      * @return of method
      */
-    public static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
-                                          Map<String, Integer> enumMap, List<String> enumList,
-                                          YangPluginConfig pluginConfig) {
+    static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
+                                   Map<String, Integer> enumMap, List<String> enumList,
+                                   YangPluginConfig pluginConfig) {
         String attrType = getReturnType(attr);
         String attrName = attr.getAttributeName();
 
@@ -1553,7 +1535,7 @@
                 + attrType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
                 + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
                 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
-        int value = 0;
+        int value;
         for (String str : enumList) {
 
             value = enumMap.get(str);
@@ -1570,42 +1552,13 @@
     }
 
     /**
-     * Returns activate method string.
-     *
-     * @return activate method string
-     */
-    public static String addActivateMethod() {
-        return FOUR_SPACE_INDENTATION + ACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
-                + PUBLIC + SPACE + VOID + SPACE + ACTIVATE + OPEN_PARENTHESIS
-                + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
-                + NEW_LINE + EIGHT_SPACE_INDENTATION
-                + YANG_UTILS_TODO
-                + NEW_LINE + EIGHT_SPACE_INDENTATION
-                + STARTED_LOG_INFO + FOUR_SPACE_INDENTATION
-                + CLOSE_CURLY_BRACKET + NEW_LINE;
-    }
-
-    /**
-     * Returns deactivate method string.
-     *
-     * @return deactivate method string
-     */
-    public static String addDeActivateMethod() {
-        return NEW_LINE + FOUR_SPACE_INDENTATION + DEACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
-                + PUBLIC + SPACE + VOID + SPACE + DEACTIVATE + OPEN_PARENTHESIS
-                + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
-                + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION
-                + STOPPED_LOG_INFO + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
-    }
-
-    /**
      * Returns from string method parsed string.
      *
      * @param targetDataType target data type
      * @param yangType       YANG type
      * @return parsed string
      */
-    public static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
+    private static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
 
         YangDataTypes type = yangType.getDataType();
 
@@ -1629,7 +1582,6 @@
             case DECIMAL64:
                 return NEW + SPACE + BIG_DECIMAL;
             case STRING:
-                return EMPTY_STRING;
             case IDENTITYREF:
                 return EMPTY_STRING;
             case EMPTY:
@@ -1646,22 +1598,6 @@
     }
 
     /**
-     * Returns the constructor strings for class file.
-     *
-     * @param attr         attribute info
-     * @param pluginConfig plugin configurations
-     * @return constructor for class
-     */
-    public static String getAugmentedConstructor(JavaAttributeInfo attr, YangPluginConfig pluginConfig) {
-
-        String attributeName = getCamelCase(attr.getAttributeName(), pluginConfig.getConflictResolver());
-
-        return EIGHT_SPACE_INDENTATION + THIS + PERIOD + attributeName + OPEN_PARENTHESIS
-                + VALUE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
-                + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
-    }
-
-    /**
      * Returns augmented data getter and setter methods for service class.
      *
      * @param parent parent node
@@ -1688,11 +1624,9 @@
             }
             returnType = getAugmentedClassNameForDataMethods(augmentedNode, parent);
             parentName = getParentNodeNameForDataMethods(augmentedNode, pluginConfig);
-            method = getJavaDoc(GETTER_METHOD, getSmallCase(AUGMENTED + parentName + curNodeName), false,
-                    pluginConfig) + getGetterForInterface(AUGMENTED + parentName
-                            + getCapitalCase(curNodeName),
-                    returnType, false, GENERATE_SERVICE_AND_MANAGER)
-                    + NEW_LINE;
+            method = generateForGetMethodWithAttribute(returnType)
+                    + getGetMethodWithArgument(returnType, AUGMENTED + parentName
+                    + getCapitalCase(curNodeName)) + NEW_LINE;
             methods.append(method);
 
             method = getJavaDoc(MANAGER_SETTER_METHOD, AUGMENTED +
@@ -1707,54 +1641,12 @@
     }
 
     /**
-     * Returns augmented data getter and setter methods for manager class.
-     *
-     * @param parent parent node
-     * @return augmented data getter and setter methods for manager class
-     */
-    static String getAugmentsDataMethodForManager(YangNode parent) {
-        List<YangAtomicPath> targets = getSetOfNodeIdentifiers(parent);
-        YangNode augmentedNode;
-        String curNodeName;
-        String returnType;
-        String method;
-        StringBuilder methods = new StringBuilder();
-        String parentName;
-        YangNode methodNode;
-        YangPluginConfig pluginConfig = ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig();
-        for (YangAtomicPath nodeId : targets) {
-            augmentedNode = nodeId.getResolvedNode().getParent();
-            methodNode = nodeId.getResolvedNode();
-            if (((JavaFileInfoContainer) methodNode).getJavaFileInfo().getJavaName() != null) {
-                curNodeName = ((JavaFileInfoContainer) methodNode).getJavaFileInfo().getJavaName();
-            } else {
-                curNodeName = getCapitalCase(getCamelCase(methodNode.getName(), pluginConfig
-                        .getConflictResolver()));
-            }
-            returnType = getAugmentedClassNameForDataMethods(augmentedNode, parent);
-            parentName = getParentNodeNameForDataMethods(augmentedNode, pluginConfig);
-            method = getOverRideString() + getGetter(returnType, AUGMENTED
-                            + parentName + getCapitalCase(curNodeName),
-                    GENERATE_SERVICE_AND_MANAGER) + NEW_LINE;
-            methods.append(method);
-
-            method = getOverRideString() + getSetter(parentName, getSmallCase(AUGMENTED) +
-                            getCapitalCase(parentName) + getCapitalCase(curNodeName),
-                    returnType,
-                    GENERATE_SERVICE_AND_MANAGER)
-                    + NEW_LINE;
-            methods.append(method);
-        }
-        return methods.toString();
-    }
-
-    /**
      * Returns validator method for range in union class.
      *
      * @param type type
      * @return validator method for range in union class
      */
-    public static String getRangeValidatorMethodForUnion(String type) {
+    static String getRangeValidatorMethodForUnion(String type) {
         String newType;
         if (type.contentEquals(BIG_INTEGER)) {
             newType = LONG;
@@ -1790,7 +1682,7 @@
      * @param addFirst true int/long need to be added first
      * @return if condition string for typedef constructor
      */
-    private static String ifConditionForIntInTypeDefConstrcutor(ValidatorTypeForUnionTypes type, boolean addFirst) {
+    private static String ifConditionForIntInTypeDefConstructor(ValidatorTypeForUnionTypes type, boolean addFirst) {
         String condition = EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + VALIDATE_RANGE + OPEN_PARENTHESIS;
 
         if (type == INT_TYPE_CONFLICT) {
@@ -1809,5 +1701,249 @@
         return condition + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
     }
 
+    //Get method with arguments.
+    private static String getGetMethodWithArgument(String returnType, String yangName) {
+        return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
+                + OPEN_PARENTHESIS + returnType + OP_PARAM + SPACE + getSmallCase(returnType) + CLOSE_PARENTHESIS +
+                SEMI_COLAN;
+    }
 
+    /**
+     * Returns add to list method interface.
+     *
+     * @param attr java attribute
+     * @return add to list method interface
+     */
+    public static String getAddToListMethodInterface(JavaAttributeInfo attr) {
+        return FOUR_SPACE_INDENTATION + VOID + SPACE + ADD_STRING + getCapitalCase(TO) +
+                getCapitalCase(attr.getAttributeName()) + OPEN_PARENTHESIS + getReturnType(attr) + SPACE +
+                VALUE + CLOSE_PARENTHESIS + SEMI_COLAN;
+    }
+
+    /**
+     * Returns add to list method impl.
+     *
+     * @param attr java attribute
+     * @return add to list method impl
+     */
+    public static String getAddToListMethodImpl(JavaAttributeInfo attr) {
+        return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + ADD_STRING +
+                getCapitalCase(TO) + getCapitalCase(attr.getAttributeName()) + OPEN_PARENTHESIS +
+                getReturnType(attr) + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
+                + NEW_LINE + EIGHT_SPACE_INDENTATION + attr.getAttributeName() + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
+                + PERIOD + ADD_STRING + OPEN_PARENTHESIS + VALUE + CLOSE_PARENTHESIS + SEMI_COLAN +
+                NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+    }
+
+    /**
+     * Returns builder method for class.
+     *
+     * @param name name of class
+     * @return builder method for class
+     */
+    static String builderMethod(String name) {
+        return NEW_LINE + generateForBuilderMethod(name) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE
+                + name + BUILDER + SPACE + getSmallCase(BUILDER) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
+                OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name +
+                BUILDER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
+                CLOSE_CURLY_BRACKET;
+    }
+
+    /**
+     * Returns is filter content match interface.
+     *
+     * @param name name of node
+     * @return is filter content match interface
+     */
+    static String isFilterContentMatchInterface(String name) {
+        String method = "    /**\n" +
+                "     * Checks if the passed " + name + " maps the content match query condition.\n" +
+                "     *\n" +
+                "     * @param " + getSmallCase(name) + SPACE + getSmallCase(name) + SPACE + "being passed to check" +
+                " for" +
+                " content match\n" +
+                "     * @return match result\n" +
+                "     */\n";
+        return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS
+                + name + SPACE + getSmallCase(name) + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+    }
+
+    /**
+     * Returns is value set interface.
+     *
+     * @return is value set interface
+     */
+    static String isLeafValueSetInterface() {
+        String method = "    /**\n" +
+                "     * Checks if the leaf value is set.\n" +
+                "     *\n" +
+                "     * @param leaf leaf whose value status needs to checked\n" +
+                "     * @return result of leaf value set in object\n" +
+                "     */\n";
+        return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + VALUE_LEAF_SET + OPEN_PARENTHESIS
+                + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+    }
+
+    /**
+     * Returns is select leaf set interface.
+     *
+     * @return is select leaf set interface
+     */
+    static String isSelectLeafSetInterface() {
+        String method = "    /**\n" +
+                "     * Checks if the leaf is set to be a selected leaf.\n" +
+                "     *\n" +
+                "     * @param leaf if leaf needs to be selected\n" +
+                "     * @return result of leaf value set in object\n" +
+                "     */\n";
+        return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + IS_SELECT_LEAF + OPEN_PARENTHESIS
+                + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+    }
+
+    /**
+     * Returns set select leaf set interface.
+     *
+     * @param name node name
+     * @return set select leaf set interface
+     */
+    static String setSelectLeafSetInterface(String name) {
+        String method = "    /**\n" +
+                "     * Set a leaf to be selected.\n" +
+                "     *\n" +
+                "     * @param leaf leaf needs to be selected\n" +
+                "     */\n";
+        return method + FOUR_SPACE_INDENTATION + name + BUILDER + SPACE + SET_SELECT_LEAF + OPEN_PARENTHESIS
+                + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+    }
+
+    /**
+     * Returns leaf identifier interface enum signature.
+     *
+     * @param name name of node
+     * @return leaf identifier interface enum signature
+     */
+    static String getInterfaceLeafIdEnumSignature(String name) {
+        String start = "    /**\n" +
+                "     * Identify the leaf of " + name + PERIOD + NEW_LINE +
+                "     */\n";
+        return start + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + ENUM + SPACE + LEAF_IDENTIFIER + SPACE +
+                OPEN_CURLY_BRACKET + NEW_LINE;
+    }
+
+    /**
+     * Returns interface leaf identifier enum method.
+     *
+     * @return interface leaf identifier enum method
+     */
+    static String getInterfaceLeafIdEnumMethods() {
+        return "        private int leafIndex;\n" +
+                "\n" +
+                "        public int getLeafIndex() {\n" +
+                "            return leafIndex;\n" +
+                "        }\n" +
+                "\n" +
+                "        LeafIdentifier(int value) {\n" +
+                "            this.leafIndex = value;\n" +
+                "        }\n" +
+                "    }\n";
+    }
+
+    /**
+     * Returns getter methods for operation attributes.
+     *
+     * @return getter methods for operation attributes
+     */
+    static String getOperationAttributesGetters() {
+        return "\n" +
+                "    /**\n" +
+                "     * Returns the _valueLeafFlags.\n" +
+                "     *\n" +
+                "     * @return value of _valueLeafFlags\n" +
+                "     */\n" +
+                "    public BitSet get_valueLeafFlags() {\n" +
+                "        return _valueLeafFlags;\n" +
+                "    }\n" +
+                "\n" +
+                "    /**\n" +
+                "     * Returns the _selectLeafFlags.\n" +
+                "     *\n" +
+                "     * @return value of _selectLeafFlags\n" +
+                "     */\n" +
+                "    public BitSet get_selectLeafFlags() {\n" +
+                "        return _selectLeafFlags;\n" +
+                "    }\n" +
+                "\n";
+    }
+
+    /**
+     * Returns getter for operation type.
+     *
+     * @return getter for operation type
+     */
+    static String getGetterForOperationType() {
+        return "    /**\n" +
+                "     * Returns the _operationType.\n" +
+                "     *\n" +
+                "     * @return value of _operationType\n" +
+                "     */\n" +
+                "    public OperationType get_operationType() {\n" +
+                "        return _operationType;\n" +
+                "    }\n";
+    }
+
+    /**
+     * Returns getters for value and select leaf.
+     *
+     * @return getters for value and select leaf
+     */
+    static String getGettersForValueAndSelectLeaf() {
+        return "\n" +
+                "    @Override\n" +
+                "    public boolean isLeafValueSet(LeafIdentifier leaf) {\n" +
+                "        return get_valueLeafFlags().get(leaf.getLeafIndex());\n" +
+                "    }\n" +
+                "\n" +
+                "    @Override\n" +
+                "    public boolean isSelectLeaf(LeafIdentifier leaf) {\n" +
+                "        return get_selectLeafFlags().get(leaf.getLeafIndex());\n" +
+                "    }\n";
+    }
+
+    /**
+     * Returns setter for operation type.
+     *
+     * @param name name of node
+     * @return setter for operation type
+     */
+    static String getSetterForOperationType(String name) {
+        return "    /**\n" +
+                "     * Set operation type.\n" +
+                "     *\n" +
+                "     * @param _operationType operation type\n" +
+                "     */\n" +
+                "    public " + name + BUILDER + " set_operationType(OperationType _operationType) {\n" +
+                "       this._operationType = _operationType;\n" +
+                "        return this;\n" +
+                "    }\n";
+    }
+
+    /**
+     * Returns setter for select leaf.
+     *
+     * @param name       name of node
+     * @param isRootNode if root node
+     * @return setter for select leaf
+     */
+    static String getSetterForSelectLeaf(String name, boolean isRootNode) {
+        String append = OVERRIDE;
+        if (isRootNode) {
+            append = EMPTY_STRING;
+        }
+        return "\n" +
+                "    " + append + "\n" +
+                "    public " + name + BUILDER + " selectLeaf(LeafIdentifier leaf) {\n" +
+                "        get_selectLeafFlags().set(leaf.getLeafIndex());\n" +
+                "        return this;\n" +
+                "    }\n";
+    }
 }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ValidatorTypeForUnionTypes.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ValidatorTypeForUnionTypes.java
index 1f5276b..a9890bd 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ValidatorTypeForUnionTypes.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ValidatorTypeForUnionTypes.java
@@ -22,12 +22,12 @@
 public enum ValidatorTypeForUnionTypes {
 
     /**
-     * When conflict is there for int32 and uint16.
+     * When conflict is there for int32 and uInt16.
      */
     INT_TYPE_CONFLICT,
 
     /**
-     * When conflict is there for int64 and uint32.
+     * When conflict is there for int64 and uInt32.
      */
     LONG_TYPE_CONFLICT
 }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
index 2312ba7..21f2723 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
@@ -107,6 +107,11 @@
     public static final String JAVA_DOC_SETTERS = " * Returns the builder object of ";
 
     /**
+     * JavaDocs's description for add to list method.
+     */
+    public static final String JAVA_DOC_ADD_TO_LIST = " * Adds to the list of ";
+
+    /**
      * JavaDocs's description for setter method.
      */
     public static final String JAVA_DOC_MANAGER_SETTERS = " * Sets the value to attribute ";
@@ -187,11 +192,6 @@
     public static final String OPERATION = "OpParam";
 
     /**
-     * Static attribute for operation type.
-     */
-    public static final String OPERATION_ENUM = "OperationType";
-
-    /**
      * Static attribute for java code generation for sbi.
      */
     public static final String SBI = "sbi";
@@ -217,16 +217,16 @@
     public static final String PERIOD = ".";
 
     /**
+     * Static attribute for period.
+     */
+    public static final String INVOKE = "invoke";
+
+    /**
      * Static attribute for parse byte.
      */
     public static final String PARSE_BYTE = "parseByte";
 
     /**
-     * Static attribute for get bytes.
-     */
-    public static final String GET_BYTES = "getBytes";
-
-    /**
      * Static attribute for parse boolean.
      */
     public static final String PARSE_BOOLEAN = "parseBoolean";
@@ -694,11 +694,6 @@
     public static final String OPEN_PARENTHESIS = "(";
 
     /**
-     * Static attribute for received syntax.
-     */
-    public static final String RECEIVED_OBJECT = "recv";
-
-    /**
      * Static attribute for switch syntax.
      */
     public static final String SWITCH = "switch";
@@ -749,6 +744,16 @@
     public static final String GET_METHOD_PREFIX = "get";
 
     /**
+     * Static attribute for getter method prefix.
+     */
+    public static final String GET_METHOD = "getMethod";
+
+    /**
+     * Static attribute for getter method prefix.
+     */
+    public static final String GET_CLASS = "getClass()";
+
+    /**
      * Static attribute for setter method prefix.
      */
     public static final String SET_METHOD_PREFIX = "set";
@@ -756,57 +761,18 @@
     /**
      * Static attribute for get filter leaf flags.
      */
-    public static final String GET_FILTER_LEAF = "getFilterLeafFlags";
+    public static final String GET_FILTER_LEAF = "get_valueLeafFlags";
 
     /**
-     * Static attribute for get filter leaf list flags.
+     * Static attribute for getLeafIndex.
      */
-    public static final String GET_FILTER_LEAF_LIST = "getFilterLeafListFlags";
+    public static final String GET_LEAF_INDEX = "getLeafIndex()";
 
     /**
-     * Static attribute for filter leaf flags.
+     * Static attribute for op param.
      */
-    public static final String FILTER_LEAF = "filterLeafFlags";
+    public static final String OP_PARAM = "OpParam";
 
-    /**
-     * Static attribute for filter leaf list flags.
-     */
-    public static final String FILTER_LEAF_LIST = "filterLeafListFlags";
-
-    /**
-     * Static attribute for get select leaf flags.
-     */
-    public static final String GET_SELECT_LEAF = "getSelectLeafFlags";
-
-    /**
-     * Static attribute for get select leaf list flags.
-     */
-    public static final String GET_SELECT_LEAF_LIST = "getSelectLeafListFlags";
-
-    /**
-     * Static attribute for get operation type.
-     */
-    public static final String GET_OPERATION_TYPE = "getOpertionType";
-
-    /**
-     * Static attribute for set operation type.
-     */
-    public static final String SET_OPERATION_TYPE = "setOpertionType";
-
-    /**
-     * Static attribute for select leaf flags.
-     */
-    public static final String SELECT_LEAF = "selectLeafFlags";
-
-    /**
-     * Static attribute for select leaf list flags.
-     */
-    public static final String SELECT_LEAF_LIST = "selectLeafListFlags";
-
-    /**
-     * Static attribute for op param type.
-     */
-    public static final String OP_PARAM_TYPE = "opParamType";
 
     /**
      * Static attribute for is filter content match method prefix.
@@ -814,6 +780,41 @@
     public static final String FILTER_CONTENT_MATCH = "isFilterContentMatch";
 
     /**
+     * Static attribute for flag prefix.
+     */
+    public static final String FLAG = "flag";
+
+    /**
+     * Static attribute for break prefix.
+     */
+    public static final String BREAK = "break";
+
+    /**
+     * Static attribute for break prefix.
+     */
+    public static final String IS_EMPTY = "isEmpty()";
+
+    /**
+     * Static attribute for is isLeafValueSet method prefix.
+     */
+    public static final String VALUE_LEAF_SET = "isLeafValueSet";
+
+    /**
+     * Static attribute for is isSelectLeaf method prefix.
+     */
+    public static final String IS_SELECT_LEAF = "isSelectLeaf";
+
+    /**
+     * Static attribute for is selectLeaf method prefix.
+     */
+    public static final String SET_SELECT_LEAF = "selectLeaf";
+
+    /**
+     * Static attribute for is LeafIdentifier enum prefix.
+     */
+    public static final String LEAF_IDENTIFIER = "LeafIdentifier";
+
+    /**
      * Static attribute for four space indentation.
      */
     public static final String FOUR_SPACE_INDENTATION = "    ";
@@ -834,36 +835,6 @@
     public static final String CATCH = "catch";
 
     /**
-     * Static attribute for super syntax.
-     */
-    public static final String SUPER = "super";
-
-    /**
-     * Static attribute for merge syntax.
-     */
-    public static final String MERGE = "MERGE,";
-
-    /**
-     * Static attribute for replace syntax.
-     */
-    public static final String REPLACE = "REPLACE,";
-
-    /**
-     * Static attribute for create syntax.
-     */
-    public static final String CREATE = "CREATE,";
-
-    /**
-     * Static attribute for delete syntax.
-     */
-    public static final String DELETE = "DELETE,";
-
-    /**
-     * Static attribute for remove syntax.
-     */
-    public static final String REMOVE = "REMOVE";
-
-    /**
      * Static attribute for eight space indentation.
      */
     public static final String EIGHT_SPACE_INDENTATION = FOUR_SPACE_INDENTATION + FOUR_SPACE_INDENTATION;
@@ -879,6 +850,16 @@
     public static final String SIXTEEN_SPACE_INDENTATION = EIGHT_SPACE_INDENTATION + EIGHT_SPACE_INDENTATION;
 
     /**
+     * Static attribute for twenty space indentation.
+     */
+    public static final String TWENTY_SPACE_INDENTATION = FOUR_SPACE_INDENTATION + SIXTEEN_SPACE_INDENTATION;
+
+    /**
+     * Static attribute for twenty four space indentation.
+     */
+    public static final String TWENTY_FOUR_SPACE_INDENTATION = EIGHT_SPACE_INDENTATION + SIXTEEN_SPACE_INDENTATION;
+
+    /**
      * Static attribute for generated code path.
      */
     public static final String YANG_GEN_DIR = "src/main/java/";
@@ -899,7 +880,7 @@
     public static final String YANG_AUTO_PREFIX = "yangAutoPrefix";
 
     /**
-     * Static attribute for YANG version perifx.
+     * Static attribute for YANG version prefix.
      */
     public static final String VERSION_PREFIX = "v";
 
@@ -1014,7 +995,7 @@
     public static final String LONG_WRAPPER = "Long";
 
     /**
-     * Static varibale for question mark.
+     * Static variable for question mark.
      */
     public static final String QUESTION_MARK = "?";
 
@@ -1022,11 +1003,11 @@
      * List of keywords in java, this is used for checking if the input does not contain these keywords.
      */
     public static final List<String> JAVA_KEY_WORDS = Arrays.asList(
-            "abstract", "continue", "for", "new", "switch", "assert", "default", "goto", "package", "synchronized",
-            "boolean", "do", "if", "private", "this", "break", "double", "implements", "protected", "throw", "byte",
-            "else", "import", "public", "throws", "case", "enum", "instanceof", "return", "transient", "catch",
-            "extends", "int", "short", "try", "char", "final", "interface", "static", "void", "class", "finally",
-            "long", "strictfp", "volatile", "const", "float", "native", "super", "while");
+            "abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue",
+            "default", "do", "double", "else", "extends", "false", "final", "finally", "float", "for", "goto", "if",
+            "implements", "import", "instanceof", "enum", "int", "interface", "long", "native", "new", "null",
+            "package", "private", "protected", "public", "return", "short", "static", "strictfp", "super", "switch",
+            "synchronized", "this", "throw", "throws", "transient", "true", "try", "void", "volatile", "while");
 
     /**
      * Static attribute for regex for all the special characters.
@@ -1199,11 +1180,6 @@
     public static final String EVENT_SUBJECT_NAME_SUFFIX = "EventSubject";
 
     /**
-     * Static attribute for impl syntax.
-     */
-    public static final String IMPL = "Impl";
-
-    /**
      * Static attribute for build method syntax.
      */
     public static final String BUILD = "build";
@@ -1275,21 +1251,6 @@
     public static final String JAVA_UTIL_IMPORT_BASE64_CLASS = "Base64;\n";
 
     /**
-     * Static attribute for AugmentedInfo class import package.
-     */
-    public static final String YANG_AUGMENTED_INFO_CLASS_IMPORT_PKG = "org.onosproject.yangutils.datamodel";
-
-    /**
-     * Static attribute for AugmentedInfo class import class.
-     */
-    public static final String YANG_AUGMENTED_INFO_CLASS_IMPORT_CLASS = "YangAugmentedInfo;\n";
-
-    /**
-     * Static attribute for augmentation class.
-     */
-    public static final String AUGMENTED_INFO = "AugmentedInfo";
-
-    /**
      * Static attribute for AugmentedInfo class.
      */
     public static final String YANG_AUGMENTED_INFO = "YangAugmentedInfo";
@@ -1305,104 +1266,11 @@
     public static final String LIST = "List";
 
     /**
-     * Comment to be added for autogenerated impl methods.
+     * Comment to be added for auto generated impl methods.
      */
     public static final String YANG_UTILS_TODO = "//TODO: YANG utils generated code";
 
     /**
-     * Static attribute for activate annotation.
-     */
-    public static final String ACTIVATE_ANNOTATION = "@Activate\n";
-
-    /**
-     * Static attribute for activate.
-     */
-    public static final String ACTIVATE = "activate";
-
-    /**
-     * Static attribute for activate annotation import.
-     */
-    public static final String ACTIVATE_ANNOTATION_IMPORT = "import org.apache.felix.scr.annotations.Activate;\n";
-
-    /**
-     * Static attribute for deactivate annotation.
-     */
-    public static final String DEACTIVATE_ANNOTATION = "@Deactivate\n";
-
-    /**
-     * Static attribute for deactivate.
-     */
-    public static final String DEACTIVATE = "deactivate";
-
-    /**
-     * Static attribute for deactivate annotation import.
-     */
-    public static final String DEACTIVATE_ANNOTATION_IMPORT =
-            "import org.apache.felix.scr.annotations.Deactivate;\n";
-
-    /**
-     * Static attribute for component annotation.
-     */
-    public static final String COMPONENT_ANNOTATION = "@Component";
-
-    /**
-     * Static attribute for component.
-     */
-    public static final String COMPONENT = "Component";
-
-    /**
-     * Static attribute for immediate.
-     */
-    public static final String IMMEDIATE = "immediate";
-
-    /**
-     * Static attribute for component annotation import.
-     */
-    public static final String COMPONENT_ANNOTATION_IMPORT =
-            "import org.apache.felix.scr.annotations.Component;\n";
-
-    /**
-     * Static attribute for service annotation.
-     */
-    public static final String SERVICE_ANNOTATION = "@Service\n";
-
-    /**
-     * Static attribute for service annotation import.
-     */
-    public static final String SERVICE_ANNOTATION_IMPORT =
-            "import org.apache.felix.scr.annotations.Service;\n";
-
-    /**
-     * Static attribute for logger factory import.
-     */
-    public static final String LOGGER_FACTORY_IMPORT =
-            "import static org.slf4j.LoggerFactory.getLogger;\n";
-
-    /**
-     * Static attribute for logger import.
-     */
-    public static final String LOGGER_IMPORT =
-            "import org.slf4j.Logger;\n";
-
-    /**
-     * Static attribute for logger statement.
-     */
-    public static final String LOGGER_STATEMENT =
-            "\n    private final Logger log = getLogger(getClass());\n";
-
-    /**
-     * Static attribute for logger statement for started.
-     */
-    public static final String STARTED_LOG_INFO =
-            "log.info(\"Started\");\n";
-
-    /**
-     * Static attribute for logger statement for stopped.
-     */
-    public static final String STOPPED_LOG_INFO =
-            "log.info(\"Stopped\");\n";
-
-    /**
      * Static attribute for AbstractEvent.
      */
     public static final String ABSTRACT_EVENT = "AbstractEvent";
@@ -1470,16 +1338,6 @@
             + "identity for given base";
 
     /**
-     * Static attribute for reference.
-     */
-    public static final String REFERENCE = "Reference";
-
-    /**
-     * Static attribute for ReferenceCardinality.
-     */
-    public static final String REFERENCE_CARDINALITY = "ReferenceCardinality";
-
-    /**
      * Static attribute for jar.
      */
     public static final String JAR = "jar";
@@ -1495,31 +1353,34 @@
     public static final String YANG_AUGMENTED_OP_PARAM_INFO = "YangAugmentedOpParamInfo";
 
     /**
-     * Static attribute for YangAugmentedOpParamInfo.
+     * Static attribute for NoSuchMethodException.
      */
-    public static final String YANG_AUGMENTED_OP_PARAM_INFO_CLASS = "YangAugmentedOpParamInfo;\n";
+    public static final String NO_SUCH_METHOD_EXCEPTION = "NoSuchMethodException";
 
     /**
-     * Static attribute for IllegalArgumentException.
+     * Static attribute for InvocationTargetException.
      */
-    public static final String ILLEGAL_ARGUMENT_EXCEPTION = "IllegalArgumentException";
+    public static final String INVOCATION_TARGET_EXCEPTION = "InvocationTargetException";
 
     /**
-     * Static attribute for IllegalArgumentException.
+     * Static attribute for InvocationTargetException.
      */
-    public static final String ILLEGAL_ARGUMENT_EXCEPTION_MSG = "\"provided augmented info is invalid for content " +
-            "match.\"";
+    public static final String INVOCATION_TARGET_EXCEPTION_IMPORT = "import" +
+            " java.lang.reflect.InvocationTargetException;\n";
+    /**
+     * Static attribute for IllegalAccessException.
+     */
+    public static final String ILLEGAL_ACCESS_EXCEPTION = "IllegalAccessException";
 
     /**
-     * Static attribute for throw.
+     * Static attribute for arrayList.
      */
-    public static final String THROW = "throw";
+    public static final String ARRAY_LIST = "ArrayList<>()";
 
     /**
-     * Static attribute for baseClass().
+     * Static attribute for arrayList import.
      */
-    public static final String BASE_CLASS = "BaseClass()";
-
+    public static final String ARRAY_LIST_IMPORT = IMPORT + COLLECTION_IMPORTS + ".ArrayList;\n";
 
     /**
      * Creates an instance of util constants.
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java
index fae08ed..1b58c0f 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java
@@ -44,16 +44,13 @@
     }
 
     /**
-     * Reads the contents from source file and append its contents to append
-     * file.
+     * Reads the contents from source file and append its contents to append file.
      *
-     * @param toAppend destination file in which the contents of source file is
-     *                 appended
-     * @param srcFile  source file from which data is read and added to to append
-     *                 file
+     * @param toAppend destination file in which the contents of source file is appended
+     * @param srcFile  source file from which data is read and added to to append file
      * @throws IOException any IO errors
      */
-    public static void appendFileContents(File toAppend, File srcFile)
+    static void appendFileContents(File toAppend, File srcFile)
             throws IOException {
         updateFileHandle(srcFile, NEW_LINE + readAppendFile(toAppend.toString(), FOUR_SPACE_INDENTATION), false);
     }
@@ -76,14 +73,21 @@
             String line = bufferReader.readLine();
 
             while (line != null) {
-                if (line.equals(SPACE) || line.equals(EMPTY_STRING) || line.equals(EIGHT_SPACE_INDENTATION)
-                        || line.equals(MULTIPLE_NEW_LINE)) {
-                    stringBuilder.append(NEW_LINE);
-                } else if (line.equals(FOUR_SPACE_INDENTATION)) {
-                    stringBuilder.append(EMPTY_STRING);
-                } else {
-                    stringBuilder.append(spaces + line);
-                    stringBuilder.append(NEW_LINE);
+                switch (line) {
+                    case SPACE:
+                    case EMPTY_STRING:
+                    case EIGHT_SPACE_INDENTATION:
+                    case MULTIPLE_NEW_LINE:
+                        stringBuilder.append(NEW_LINE);
+                        break;
+                    case FOUR_SPACE_INDENTATION:
+                        stringBuilder.append(EMPTY_STRING);
+                        break;
+                    default:
+                        String append = spaces + line;
+                        stringBuilder.append(append);
+                        stringBuilder.append(NEW_LINE);
+                        break;
                 }
                 line = bufferReader.readLine();
             }
@@ -100,10 +104,10 @@
      * @param inputFile        input file
      * @param contentTobeAdded content to be appended to the file
      * @param isClose          when close of file is called.
-     * @throws IOException if the named file exists but is a directory rather than a regular file,
-     *                     does not exist but cannot be created, or cannot be opened for any other reason
+     * @throws IOException if the named file exists but is a directory rather than a regular file, does not exist but
+     *                     cannot be created, or cannot be opened for any other reason
      */
-    public static void updateFileHandle(File inputFile, String contentTobeAdded, boolean isClose)
+    static void updateFileHandle(File inputFile, String contentTobeAdded, boolean isClose)
             throws IOException {
 
         List<FileWriter> fileWriterStore = new ArrayList<>();
@@ -119,7 +123,6 @@
             for (FileWriter curWriter : fileWriterStore) {
                 curWriter.flush();
                 curWriter.close();
-                curWriter = null;
             }
         }
     }
@@ -137,7 +140,10 @@
         if (file != null) {
             updateFileHandle(file, null, true);
             if (toBeDeleted) {
-                file.delete();
+                boolean deleted = file.delete();
+                if (!deleted) {
+                    throw new IOException("Failed to delete temporary file " + file.getName());
+                }
             }
         }
     }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
index a674f17..3b47386 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
@@ -19,17 +19,12 @@
 import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 
 import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
-import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_FOR_VALIDATOR;
-import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_FOR_VALIDATOR_RETURN;
-import static org.onosproject.yangutils.utils.UtilConstants.MAX_RANGE;
-import static org.onosproject.yangutils.utils.UtilConstants.MIN_RANGE;
-import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_CLASS_JAVA_DOC;
-import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM_JAVA_DOC;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_INTERFACE_JAVA_DOC;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_OBJECT;
 import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
+import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.ENUM_ATTRIBUTE_JAVADOC;
 import static org.onosproject.yangutils.utils.UtilConstants.ENUM_CLASS_JAVADOC;
@@ -38,15 +33,17 @@
 import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
 import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
-import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
 import static org.onosproject.yangutils.utils.UtilConstants.IMPL_CLASS_JAVA_DOC;
 import static org.onosproject.yangutils.utils.UtilConstants.INPUT;
 import static org.onosproject.yangutils.utils.UtilConstants.INTERFACE_JAVA_DOC;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_ADD_TO_LIST;
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_BUILD;
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_BUILD_RETURN;
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_CONSTRUCTOR;
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_END_LINE;
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_FIRST_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_FOR_VALIDATOR;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_FOR_VALIDATOR_RETURN;
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_GETTERS;
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_MANAGER_SETTERS;
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_OF;
@@ -57,11 +54,14 @@
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_SETTERS_COMMON;
 import static org.onosproject.yangutils.utils.UtilConstants.LIST;
 import static org.onosproject.yangutils.utils.UtilConstants.MAP;
+import static org.onosproject.yangutils.utils.UtilConstants.MAX_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.MIN_RANGE;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE_ASTERISK;
 import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
 import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.OF;
+import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM_JAVA_DOC;
 import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE_INFO_JAVADOC;
 import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE_INFO_JAVADOC_OF_CHILD;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
@@ -71,6 +71,7 @@
 import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
 import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
 import static org.onosproject.yangutils.utils.UtilConstants.VOID;
+import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
 
@@ -92,7 +93,7 @@
      * @param name         name of the YangNode
      * @param isList       is list attribute
      * @param pluginConfig plugin configurations
-     * @return javadocs.
+     * @return javaDocs.
      */
     public static String getJavaDoc(JavaDocType type, String name, boolean isList, YangPluginConfig pluginConfig) {
 
@@ -167,6 +168,9 @@
             case EVENT_SUBJECT_CLASS: {
                 return generateForClass(name);
             }
+            case ADD_TO_LIST: {
+                return generateForAddToList(name);
+            }
             default: {
                 return generateForConstructors(name);
             }
@@ -180,8 +184,8 @@
      * @return javaDocs
      */
     private static String generateForEnumAttr(String name) {
-        return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + ENUM_ATTRIBUTE_JAVADOC
-                + name + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
+        return EIGHT_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + EIGHT_SPACE_INDENTATION + ENUM_ATTRIBUTE_JAVADOC
+                + name + PERIOD + NEW_LINE + EIGHT_SPACE_INDENTATION + JAVA_DOC_END_LINE;
     }
 
     /**
@@ -438,11 +442,11 @@
     /**
      * Generates javaDoc for the builder interface.
      *
-     * @param builderforName builder for name
+     * @param builderForName builder for name
      * @return javaDocs
      */
-    private static String generateForBuilderInterface(String builderforName) {
-        return JAVA_DOC_FIRST_LINE + BUILDER_INTERFACE_JAVA_DOC + builderforName + PERIOD + NEW_LINE
+    private static String generateForBuilderInterface(String builderForName) {
+        return JAVA_DOC_FIRST_LINE + BUILDER_INTERFACE_JAVA_DOC + builderForName + PERIOD + NEW_LINE
                 + JAVA_DOC_END_LINE;
     }
 
@@ -480,7 +484,7 @@
      */
     private static String generateForConstructors(String className) {
         return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR
-                + className + IMPL + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
+                + className + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
                 + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + BUILDER.toLowerCase() + OBJECT + SPACE + BUILDER_OBJECT
                 + className + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
     }
@@ -504,7 +508,7 @@
      * @param attribute attribute string
      * @return javaDocs for type constructor
      */
-    public static String generateForTypeConstructor(String attribute) {
+    private static String generateForTypeConstructor(String attribute) {
         return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR
                 + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
                 + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
@@ -557,6 +561,52 @@
     }
 
     /**
+     * Generates javaDocs for type constructor.
+     *
+     * @param attribute attribute string
+     * @return javaDocs for type constructor
+     */
+    public static String generateForGetMethodWithAttribute(String attribute) {
+        return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_GETTERS
+                + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
+                + JAVA_DOC_PARAM + attribute + SPACE + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
+                + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
+                + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
+    }
+
+    /**
+     * Returns javaDocs for add to list method.
+     *
+     * @param attribute attribute
+     * @return javaDocs
+     */
+    private static String generateForAddToList(String attribute) {
+        String javadoc = NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
+                + JAVA_DOC_ADD_TO_LIST + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
+                + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + VALUE + SPACE;
+        javadoc = javadoc + VALUE + SPACE + OF + SPACE;
+        javadoc = javadoc + attribute + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
+        return javadoc;
+    }
+
+    /**
+     * Generates for builder method.
+     *
+     * @param attribute attribute
+     * @return javaDocs
+     */
+    public static String generateForBuilderMethod(String attribute) {
+
+        String javadoc = FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
+                + JAVA_DOC_GETTERS + attribute + BUILDER + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION
+                + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN;
+        javadoc = javadoc + VALUE + SPACE + OF + SPACE;
+        javadoc = javadoc + attribute + BUILDER + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
+        return javadoc;
+    }
+
+
+    /**
      * JavaDocs types.
      */
     public enum JavaDocType {
@@ -679,6 +729,12 @@
         /**
          * For operation builder.
          */
-        OPERATION_BUILDER_CLASS
+        OPERATION_BUILDER_CLASS,
+
+        /**
+         * For add to list.
+         */
+        ADD_TO_LIST,
     }
+
 }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangFileScanner.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangFileScanner.java
index ff2e3e7..b5f5fca 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangFileScanner.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangFileScanner.java
@@ -27,8 +27,8 @@
  */
 public final class YangFileScanner {
 
-    private static final String JAVA_FILE_EXTENTION = ".java";
-    private static final String YANG_FILE_EXTENTION = ".yang";
+    private static final String JAVA_FILE_EXTENSION = ".java";
+    private static final String YANG_FILE_EXTENSION = ".yang";
 
     /**
      * Creates an instance of YANG file scanner.
@@ -45,9 +45,8 @@
      * @throws IOException          when files get deleted while performing the
      *                              operations
      */
-    public static List<String> getJavaFiles(String root) throws IOException {
-
-        return getFiles(root, JAVA_FILE_EXTENTION);
+    static List<String> getJavaFiles(String root) throws IOException {
+        return getFiles(root, JAVA_FILE_EXTENSION);
     }
 
     /**
@@ -60,8 +59,7 @@
      *                              operations
      */
     public static List<String> getYangFiles(String root) throws IOException {
-
-        return getFiles(root, YANG_FILE_EXTENTION);
+        return getFiles(root, YANG_FILE_EXTENSION);
     }
 
     /**
@@ -73,22 +71,22 @@
      * @throws NullPointerException when no file is there
      * @throws IOException          when files get deleted while performing the operations
      */
-    public static List<String> getFiles(String root, String extension) throws IOException {
+    private static List<String> getFiles(String root, String extension) throws IOException {
 
         List<String> store = new LinkedList<>();
         Stack<String> stack = new Stack<>();
         stack.push(root);
         File file;
-        File[] filelist;
+        File[] fileList;
         try {
             while (!stack.empty()) {
                 root = stack.pop();
                 file = new File(root);
-                filelist = file.listFiles();
-                if ((filelist == null) || (filelist.length == 0)) {
+                fileList = file.listFiles();
+                if ((fileList == null) || (fileList.length == 0)) {
                     continue;
                 }
-                for (File current : filelist) {
+                for (File current : fileList) {
                     if (current.isDirectory()) {
                         stack.push(current.toString());
                     } else {
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
index 0c6b51e..7b91ae9 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
@@ -62,6 +62,7 @@
 import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.UNDER_SCORE;
 import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUTO_PREFIX;
+import static org.onosproject.yangutils.utils.io.impl.CopyrightHeader.getCopyrightHeader;
 import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.appendFileContents;
 import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.updateFileHandle;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.PACKAGE_INFO;
@@ -87,10 +88,16 @@
      *
      * @param path directory path
      * @return directory structure
+     * @throws IOException when fails to do IO operations
      */
-    public static File createDirectories(String path) {
+    public static File createDirectories(String path) throws IOException {
         File generatedDir = new File(path);
-        generatedDir.mkdirs();
+        if (!generatedDir.exists()) {
+            boolean isGenerated = generatedDir.mkdirs();
+            if (!isGenerated) {
+                throw new IOException("failed to generated directory " + path);
+            }
+        }
         return generatedDir;
     }
 
@@ -113,22 +120,26 @@
         try {
 
             File packageInfo = new File(path + SLASH + "package-info.java");
-            packageInfo.createNewFile();
-
+            if (!packageInfo.exists()) {
+                boolean isGenerated = packageInfo.createNewFile();
+                if (!isGenerated) {
+                    throw new IOException("failed to generated package-info " + path);
+                }
+            }
             FileWriter fileWriter = new FileWriter(packageInfo);
             BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
 
-            bufferedWriter.write(CopyrightHeader.getCopyrightHeader());
+            bufferedWriter.write(getCopyrightHeader());
             bufferedWriter.write(getJavaDoc(PACKAGE_INFO, classInfo, isChildNode, pluginConfig));
             String pkg = PACKAGE + SPACE + pack + SEMI_COLAN;
             if (pkg.length() > LINE_SIZE) {
-                pkg = whenDelimiterIsPersent(pkg, LINE_SIZE);
+                pkg = whenDelimiterIsPresent(pkg, LINE_SIZE);
             }
             bufferedWriter.write(pkg);
             bufferedWriter.close();
             fileWriter.close();
         } catch (IOException e) {
-            throw new IOException("Exception occured while creating package info file.");
+            throw new IOException("Exception occurred while creating package info file.");
         }
     }
 
@@ -192,11 +203,11 @@
         while (!stack.empty()) {
             root = stack.pop();
             File file = new File(root);
-            File[] filelist = file.listFiles();
-            if (filelist == null || filelist.length == 0) {
+            File[] fileList = file.listFiles();
+            if (fileList == null || fileList.length == 0) {
                 continue;
             }
-            for (File current : filelist) {
+            for (File current : fileList) {
                 if (current.isDirectory()) {
                     stack.push(current.toString());
                     if (current.getName().endsWith("-Temp")) {
@@ -215,12 +226,12 @@
      * Removes extra char from the string.
      *
      * @param valueString   string to be trimmed
-     * @param removalStirng extra chars
+     * @param removalString extra chars
      * @return new string
      */
-    public static String trimAtLast(String valueString, String removalStirng) {
+    public static String trimAtLast(String valueString, String removalString) {
         StringBuilder stringBuilder = new StringBuilder(valueString);
-        int index = valueString.lastIndexOf(removalStirng);
+        int index = valueString.lastIndexOf(removalString);
         if (index != -1) {
             stringBuilder.deleteCharAt(index);
         }
@@ -302,9 +313,9 @@
      */
     public static File validateLineLength(File dataFile)
             throws IOException {
-        File tempFile = dataFile;
         FileReader fileReader = new FileReader(dataFile);
         BufferedReader bufferReader = new BufferedReader(fileReader);
+        String append;
         try {
             StringBuilder stringBuilder = new StringBuilder();
             String line = bufferReader.readLine();
@@ -312,20 +323,21 @@
             while (line != null) {
                 if (line.length() > LINE_SIZE) {
                     if (line.contains(PERIOD)) {
-                        line = whenDelimiterIsPersent(line, LINE_SIZE);
+                        line = whenDelimiterIsPresent(line, LINE_SIZE);
                     } else if (line.contains(SPACE)) {
                         line = whenSpaceIsPresent(line, LINE_SIZE);
                     }
                     stringBuilder.append(line);
                 } else {
-                    stringBuilder.append(line + NEW_LINE);
+                    append = line + NEW_LINE;
+                    stringBuilder.append(append);
                 }
                 line = bufferReader.readLine();
             }
-            FileWriter writer = new FileWriter(tempFile);
+            FileWriter writer = new FileWriter(dataFile);
             writer.write(stringBuilder.toString());
             writer.close();
-            return tempFile;
+            return dataFile;
         } finally {
             fileReader.close();
             bufferReader.close();
@@ -333,14 +345,15 @@
     }
 
     /* When delimiters are present in the given line. */
-    private static String whenDelimiterIsPersent(String line, int lineSize) {
+    private static String whenDelimiterIsPresent(String line, int lineSize) {
         StringBuilder stringBuilder = new StringBuilder();
-
+        String append;
         if (line.length() > lineSize) {
             String[] strArray = line.split(Pattern.quote(PERIOD));
             stringBuilder = updateString(strArray, stringBuilder, PERIOD, lineSize);
         } else {
-            stringBuilder.append(line + NEW_LINE);
+            append = line + NEW_LINE;
+            stringBuilder.append(append);
         }
         String[] strArray = stringBuilder.toString().split(NEW_LINE);
         StringBuilder tempBuilder = new StringBuilder();
@@ -353,7 +366,8 @@
                     tempBuilder.append(whenSpaceIsPresent(str, SUB_LINE_SIZE));
                 }
             } else {
-                tempBuilder.append(str + NEW_LINE);
+                append = str + NEW_LINE;
+                tempBuilder.append(append);
             }
         }
         return tempBuilder.toString();
@@ -363,11 +377,13 @@
     /* When spaces are present in the given line. */
     private static String whenSpaceIsPresent(String line, int lineSize) {
         StringBuilder stringBuilder = new StringBuilder();
+        String append;
         if (line.length() > lineSize) {
             String[] strArray = line.split(SPACE);
             stringBuilder = updateString(strArray, stringBuilder, SPACE, lineSize);
         } else {
-            stringBuilder.append(line + NEW_LINE);
+            append = line + NEW_LINE;
+            stringBuilder.append(append);
         }
 
         String[] strArray = stringBuilder.toString().split(NEW_LINE);
@@ -379,7 +395,8 @@
                     tempBuilder = updateString(strArr, tempBuilder, SPACE, SUB_LINE_SIZE);
                 }
             } else {
-                tempBuilder.append(str + NEW_LINE);
+                append = str + NEW_LINE;
+                tempBuilder.append(append);
             }
         }
         return tempBuilder.toString();
@@ -390,28 +407,34 @@
                                               int lineSize) {
 
         StringBuilder tempBuilder = new StringBuilder();
+        String append;
         for (String str : strArray) {
-            tempBuilder.append(str + string);
+            append = str + string;
+            tempBuilder.append(append);
             if (tempBuilder.length() > lineSize) {
                 String tempString = stringBuilder.toString();
                 stringBuilder.delete(ZERO, stringBuilder.length());
                 tempString = trimAtLast(tempString, string);
                 stringBuilder.append(tempString);
                 if (string.equals(PERIOD)) {
-                    stringBuilder.append(NEW_LINE + TWELVE_SPACE_INDENTATION + PERIOD + str + string);
+                    append = NEW_LINE + TWELVE_SPACE_INDENTATION + PERIOD + str + string;
+                    stringBuilder.append(append);
                 } else {
-                    stringBuilder.append(NEW_LINE + TWELVE_SPACE_INDENTATION + str + string);
+                    append = NEW_LINE + TWELVE_SPACE_INDENTATION + str + string;
+                    stringBuilder.append(append);
                 }
                 tempBuilder.delete(ZERO, tempBuilder.length());
                 tempBuilder.append(TWELVE_SPACE_INDENTATION);
             } else {
-                stringBuilder.append(str + string);
+                append = str + string;
+                stringBuilder.append(append);
             }
         }
         String tempString = stringBuilder.toString();
         tempString = trimAtLast(tempString, string);
         stringBuilder.delete(ZERO, stringBuilder.length());
-        stringBuilder.append(tempString + NEW_LINE);
+        append = tempString + NEW_LINE;
+        stringBuilder.append(append);
         return stringBuilder;
     }
 
@@ -464,7 +487,7 @@
      * @param consecCapitalCaseRemover which requires the restriction of consecutive capital case
      * @return string without consecutive capital case
      */
-    public static String restrictConsecutiveCapitalCase(String consecCapitalCaseRemover) {
+    private static String restrictConsecutiveCapitalCase(String consecCapitalCaseRemover) {
 
         for (int k = 0; k < consecCapitalCaseRemover.length(); k++) {
             if (k + 1 < consecCapitalCaseRemover.length()) {
@@ -487,7 +510,7 @@
      * @param conflictResolver object of YANG to java naming conflict util
      * @return prefixed camel case string
      */
-    public static String addPrefix(String camelCasePrefix, YangToJavaNamingConflictUtil conflictResolver) {
+    private static String addPrefix(String camelCasePrefix, YangToJavaNamingConflictUtil conflictResolver) {
 
         String prefix = getPrefixForIdentifier(conflictResolver);
         if (camelCasePrefix.matches(REGEX_FOR_FIRST_DIGIT)) {
@@ -508,7 +531,7 @@
      * @param conflictResolver object of YANG to java naming conflict util
      * @return camel case rule checked string
      */
-    public static String applyCamelCaseRule(String[] stringArray, YangToJavaNamingConflictUtil conflictResolver) {
+    private static String applyCamelCaseRule(String[] stringArray, YangToJavaNamingConflictUtil conflictResolver) {
 
         String ruleChecker = stringArray[0].toLowerCase();
         int i;
@@ -551,8 +574,8 @@
      * @param conflictResolver object of YANG to java naming conflict util
      * @return camel cased string
      */
-    public static String upperCaseConflictResolver(String[] stringArray,
-                                                   YangToJavaNamingConflictUtil conflictResolver) {
+    private static String upperCaseConflictResolver(String[] stringArray,
+                                                    YangToJavaNamingConflictUtil conflictResolver) {
 
         for (int l = 0; l < stringArray.length; l++) {
             String[] upperCaseSplitArray = stringArray[l].split(REGEX_WITH_UPPERCASE);
@@ -579,7 +602,7 @@
             }
             stringArray[l] = strBuilder.toString();
         }
-        List<String> result = new ArrayList<String>();
+        List<String> result = new ArrayList<>();
         for (String element : stringArray) {
             String[] capitalCaseSplitArray = element.split(REGEX_WITH_UPPERCASE);
             for (String letter : capitalCaseSplitArray) {
@@ -625,10 +648,8 @@
         yangIdentifier = yangIdentifier.replaceAll(REGEX_FOR_IDENTIFIER_SPECIAL_CHAR, COLAN);
         String[] strArray = yangIdentifier.split(COLAN);
         if (strArray[0].isEmpty()) {
-            List<String> stringArrangement = new ArrayList<String>();
-            for (int i = 1; i < strArray.length; i++) {
-                stringArrangement.add(strArray[i]);
-            }
+            List<String> stringArrangement = new ArrayList<>();
+            stringArrangement.addAll(Arrays.asList(strArray).subList(1, strArray.length));
             strArray = stringArrangement.toArray(new String[stringArrangement.size()]);
         }
         return upperCaseConflictResolver(strArray, conflictResolver);
@@ -651,10 +672,8 @@
             String[] strArray = prefixForIdentifier.split(COLAN);
             try {
                 if (strArray[0].isEmpty()) {
-                    List<String> stringArrangement = new ArrayList<String>();
-                    for (int i = 1; i < strArray.length; i++) {
-                        stringArrangement.add(strArray[i]);
-                    }
+                    List<String> stringArrangement = new ArrayList<>();
+                    stringArrangement.addAll(Arrays.asList(strArray).subList(1, strArray.length));
                     strArray = stringArrangement.toArray(new String[stringArrangement.size()]);
                 }
                 prefixForIdentifier = strArray[0];
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/ietfyang/IetfYangFileTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/ietfyang/IetfYangFileTest.java
index 0fb1108..ac81198 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/ietfyang/IetfYangFileTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/ietfyang/IetfYangFileTest.java
@@ -54,7 +54,6 @@
         String userDir = System.getProperty("user.dir");
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/ietfyang/l3vpnservice/");
-        yangPluginConfig.setManagerCodeGenDir("target/ietfyang/l3vpnservice/");
 
         utilManager.translateToJava(yangPluginConfig);
 
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/AugmentTranslatorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/AugmentTranslatorTest.java
index 16914a3..fc4c6b1 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/AugmentTranslatorTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/AugmentTranslatorTest.java
@@ -20,9 +20,9 @@
 
 import org.apache.maven.plugin.MojoExecutionException;
 import org.junit.Test;
+import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
-import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
 
@@ -49,10 +49,8 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/augmentTranslator/");
-        yangPluginConfig.setManagerCodeGenDir("target/augmentTranslator/");
         utilManager.translateToJava(yangPluginConfig);
 
-        deleteDirectory("target/augmentTranslator/");
+        deleteDirectory("target/augmentTranslator1/");
     }
-
 }
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/ChoiceCaseTranslatorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/ChoiceCaseTranslatorTest.java
index ef1b774..ef179ff 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/ChoiceCaseTranslatorTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/ChoiceCaseTranslatorTest.java
@@ -44,7 +44,6 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/ChoiceCaseTestGenFile/");
-        yangPluginConfig.setManagerCodeGenDir("target/ChoiceCaseTestGenFile/");
 
         generateJavaCode(node, yangPluginConfig);
 
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/EnumTranslatorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/EnumTranslatorTest.java
index 69f6c7e..1a16f2a 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/EnumTranslatorTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/EnumTranslatorTest.java
@@ -45,7 +45,6 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/EnumTestGenFile/");
-        yangPluginConfig.setManagerCodeGenDir("target/EnumTestGenFile/");
 
         generateJavaCode(node, yangPluginConfig);
 
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/InterFileLeafrefLinkingTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/InterFileLeafrefLinkingTest.java
index cc39c53..dd1029e 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/InterFileLeafrefLinkingTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/InterFileLeafrefLinkingTest.java
@@ -19,6 +19,7 @@
 import java.io.IOException;
 import java.util.Iterator;
 import java.util.ListIterator;
+
 import org.apache.maven.plugin.MojoExecutionException;
 import org.junit.Rule;
 import org.junit.Test;
@@ -32,7 +33,6 @@
 import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
 import org.onosproject.yangutils.linker.impl.YangLinkerManager;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
-import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
 import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
 
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -52,7 +52,6 @@
 
     private final YangUtilManager utilManager = new YangUtilManager();
     private final YangLinkerManager yangLinkerManager = new YangLinkerManager();
-    private final YangUtilsParserManager manager = new YangUtilsParserManager();
 
     /**
      * Checks inter file leafref linking.
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/InterFileLinkingTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/InterFileLinkingTest.java
index a99cd6c..d899e67 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/InterFileLinkingTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/InterFileLinkingTest.java
@@ -656,7 +656,6 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/interfilewithusesreferringtype/");
-        yangPluginConfig.setManagerCodeGenDir("target/interfilewithusesreferringtype/");
 
         utilManager.translateToJava(yangPluginConfig);
 
@@ -678,7 +677,6 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/file1UsesFile2TypeDefFile3Type/");
-        yangPluginConfig.setManagerCodeGenDir("target/file1UsesFile2TypeDefFile3Type/");
 
         utilManager.translateToJava(yangPluginConfig);
 
@@ -700,7 +698,6 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/interfileietf/");
-        yangPluginConfig.setManagerCodeGenDir("target/interfileietf/");
 
         utilManager.translateToJava(yangPluginConfig);
 
@@ -722,7 +719,6 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/usesInContainer/");
-        yangPluginConfig.setManagerCodeGenDir("target/usesInContainer/");
 
         utilManager.translateToJava(yangPluginConfig);
 
@@ -744,7 +740,6 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/groupingNodeSameAsModule/");
-        yangPluginConfig.setManagerCodeGenDir("target/groupingNodeSameAsModule/");
 
         utilManager.translateToJava(yangPluginConfig);
 
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/InterJarLinkerTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/InterJarLinkerTest.java
index 615e63a..900aca9 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/InterJarLinkerTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/InterJarLinkerTest.java
@@ -41,11 +41,10 @@
 
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.Is.is;
+import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.RESOLVED;
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DERIVED;
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.STRING;
-import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.RESOLVED;
-import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.deSerializeDataModel;
-import static org.onosproject.yangutils.plugin.manager.YangPluginUtils.parseJarFile;
+import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.parseJarFile;
 import static org.onosproject.yangutils.plugin.manager.YangPluginUtils.serializeDataModel;
 import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
 import static org.onosproject.yangutils.utils.UtilConstants.TEMP;
@@ -189,7 +188,6 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir(TARGET);
-        yangPluginConfig.setManagerCodeGenDir(TARGET);
 
         utilManager.translateToJava(yangPluginConfig);
 
@@ -206,7 +204,7 @@
         File folder = new File(System.getProperty("user.dir") + SLASH + FLOW_CLASSIFIER_FOLDER);
         File file = new File(System.getProperty("user.dir") + SLASH + FLOW_CLASSIFIER_MANAGER);
         assertThat(true, is(folder.exists()));
-        assertThat(true, is(file.exists()));
+        assertThat(false, is(file.exists()));
     }
 
     /**
@@ -304,7 +302,7 @@
      */
     private void addInterJarRootNodes(String jarFile) throws IOException {
         try {
-            List<YangNode> interJarResolvedNodes = deSerializeDataModel(parseJarFile(jarFile, TARGET));
+            List<YangNode> interJarResolvedNodes = parseJarFile(jarFile, TARGET);
 
             for (YangNode node : interJarResolvedNodes) {
                 YangFileInfo dependentFileInfo = new YangFileInfo();
@@ -326,7 +324,6 @@
 
         File file = new File(TARGET + TARGET_RESOURCE_PATH);
         File[] files = file.listFiles();
-
         String[] source = new String[files.length];
 
         for (int i = 0; i < files.length; i++) {
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/ManagerCodeGeneratorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/ManagerCodeGeneratorTest.java
deleted file mode 100644
index e72471c..0000000
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/ManagerCodeGeneratorTest.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.yangutils.plugin.manager;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.apache.maven.plugin.MojoExecutionException;
-import org.junit.Test;
-import org.onosproject.yangutils.parser.exceptions.ParserException;
-import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
-import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
-
-import static org.hamcrest.core.Is.is;
-import static org.junit.Assert.assertThat;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
-
-/**
- * Unit test case to test code generation for root nodes.
- */
-public class ManagerCodeGeneratorTest {
-
-    private final YangUtilManager utilManager = new YangUtilManager();
-
-    /**
-     * Checks manager translation should not result in any exception.
-     *
-     * @throws MojoExecutionException when fails to do mojo operations
-     */
-    @Test
-    public void processManagerTranslator() throws IOException, ParserException, MojoExecutionException {
-
-        String searchDir = "src/test/resources/manager/singleChild";
-        utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
-        utilManager.parseYangFileInfoSet();
-        utilManager.createYangNodeSet();
-        utilManager.resolveDependenciesUsingLinker();
-
-        YangPluginConfig yangPluginConfig = new YangPluginConfig();
-        yangPluginConfig.setCodeGenDir("target/manager/");
-        yangPluginConfig.setManagerCodeGenDir("target/manager/");
-
-        utilManager.translateToJava(yangPluginConfig);
-        String file1 = "target/manager/org/onosproject/yang/gen/v1/test5/test/rev20160704/Test5Manager.java";
-        String file2 = "target/manager/org/onosproject/yang/gen/v1/test5/test/rev20160704/Test6Manager.java";
-        String file3 = "target/manager/org/onosproject/yang/gen/v1/test5/test/rev20160704/Test7Manager.java";
-        File manager = new File(file1);
-        assertThat(false, is(manager.exists()));
-
-        File manager2 = new File(file2);
-        assertThat(false, is(manager2.exists()));
-
-        File manager3 = new File(file3);
-        assertThat(true, is(manager3.exists()));
-
-        deleteDirectory("target/manager/");
-    }
-
-    /**
-     * Checks manager translation in different package should not result in any exception.
-     *
-     * @throws MojoExecutionException when fails to do mojo operations
-     */
-    @Test
-    public void processManagerInDifferentPackageTranslator() throws IOException, ParserException,
-            MojoExecutionException {
-
-        String searchDir = "src/test/resources/manager/singleChild";
-        utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
-        utilManager.parseYangFileInfoSet();
-        utilManager.createYangNodeSet();
-        utilManager.resolveDependenciesUsingLinker();
-
-        YangPluginConfig yangPluginConfig = new YangPluginConfig();
-        yangPluginConfig.setCodeGenDir("target/manager/");
-        yangPluginConfig.setManagerCodeGenDir("target/manager/");
-
-        utilManager.translateToJava(yangPluginConfig);
-        String file3 = "target/manager/org/onosproject/yang/gen/v1/test5/test/rev20160704/Test7Manager.java";
-
-        File manager3 = new File(file3);
-        assertThat(true, is(manager3.exists()));
-
-        deleteDirectory("target/manager/");
-        deleteDirectory("target/manager1/");
-    }
-
-    /**
-     * Checks manager translation in different package should not result in any exception.
-     *
-     * @throws MojoExecutionException when fails to do mojo operations
-     */
-    @Test
-    public void processManagerforMultiChildTranslator() throws IOException, ParserException,
-            MojoExecutionException {
-
-        String searchDir = "src/test/resources/manager/MultiChild";
-        utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
-        utilManager.parseYangFileInfoSet();
-        utilManager.createYangNodeSet();
-        utilManager.resolveDependenciesUsingLinker();
-
-        YangPluginConfig yangPluginConfig = new YangPluginConfig();
-        yangPluginConfig.setCodeGenDir("target/manager/");
-        yangPluginConfig.setManagerCodeGenDir("target/manager/");
-
-        utilManager.translateToJava(yangPluginConfig);
-        String file1 = "target/manager/org/onosproject/yang/gen/v1/test5/test/rev20160704/Test5Manager.java";
-
-        File manager1 = new File(file1);
-        assertThat(false, is(manager1.exists()));
-
-        String file2 = "target/manager/org/onosproject/yang/gen/v1/test5/test/rev20160704/Test6Manager.java";
-
-        File manager2 = new File(file2);
-        assertThat(false, is(manager2.exists()));
-
-        String file3 = "target/manager/org/onosproject/yang/gen/v1/test5/test/rev20160704/Test7Manager.java";
-
-        File manager3 = new File(file3);
-        assertThat(false, is(manager3.exists()));
-
-        String file4 = "target/manager/org/onosproject/yang/gen/v1/test8/test/rev20160704/Test8Manager.java";
-
-        File manager4 = new File(file4);
-        assertThat(true, is(manager4.exists()));
-
-        deleteDirectory("target/manager/");
-        deleteDirectory("target/manager/");
-    }
-
-    /**
-     * Checks manager translation in different package should not result in any exception.
-     *
-     * @throws MojoExecutionException when fails to do mojo operations
-     */
-    @Test
-    public void processManagerforMultiChildWithDifferentPackageTranslator() throws IOException, ParserException,
-            MojoExecutionException {
-
-        String searchDir = "src/test/resources/manager/MultiChild";
-        utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
-        utilManager.parseYangFileInfoSet();
-        utilManager.createYangNodeSet();
-        utilManager.resolveDependenciesUsingLinker();
-
-        YangPluginConfig yangPluginConfig = new YangPluginConfig();
-        yangPluginConfig.setCodeGenDir("target/manager/");
-        yangPluginConfig.setManagerCodeGenDir("target/manager1/");
-
-        utilManager.translateToJava(yangPluginConfig);
-
-        String file1 = "target/manager1/org/onosproject/yang/gen/v1/test8/test/rev20160704/Test8Manager.java";
-
-        File manager1 = new File(file1);
-        assertThat(true, is(manager1.exists()));
-
-
-        String file2 = "target/manager/org/onosproject/yang/gen/v1/test8/test/rev20160704/Test8Service.java";
-
-        File service2 = new File(file2);
-        assertThat(true, is(service2.exists()));
-
-        deleteDirectory("target/manager/");
-        deleteDirectory("target/manager1/");
-    }
-}
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/NotificationTranslatorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/NotificationTranslatorTest.java
index 8ef8a6a..2c8a7c2 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/NotificationTranslatorTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/NotificationTranslatorTest.java
@@ -45,12 +45,10 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/NotificationTest/");
-        yangPluginConfig.setManagerCodeGenDir("target/NotificationTest1/");
 
         generateJavaCode(node, yangPluginConfig);
 
         deleteDirectory("target/NotificationTest/");
-        deleteDirectory("target/NotificationTest1/");
     }
 
     // TODO enhance the test cases, after having a framework of translator test.
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/RpcTranslatorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/RpcTranslatorTest.java
index c8961d7..d014b84 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/RpcTranslatorTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/RpcTranslatorTest.java
@@ -45,7 +45,6 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/RpcTestGenFile/");
-        yangPluginConfig.setManagerCodeGenDir("target/RpcTestGenFile/");
 
         generateJavaCode(node, yangPluginConfig);
 
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/TypeDefTranslatorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/TypeDefTranslatorTest.java
index b674d26..3c97292 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/TypeDefTranslatorTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/TypeDefTranslatorTest.java
@@ -20,9 +20,9 @@
 
 import org.apache.maven.plugin.MojoExecutionException;
 import org.junit.Test;
+import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
-import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
 
@@ -49,7 +49,6 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/typedefTranslator/");
-        yangPluginConfig.setManagerCodeGenDir("target/typedefTranslator/");
         utilManager.translateToJava(yangPluginConfig);
 
         deleteDirectory("target/typedefTranslator/");
@@ -63,7 +62,6 @@
     @Test
     public void processTypeDefWithRestrictionsTranslator() throws IOException, ParserException, MojoExecutionException {
 
-        /*FIXME: After typedef with leafref is fixed.
         String searchDir = "src/test/resources/typedefTranslator/with";
         utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
         utilManager.parseYangFileInfoSet();
@@ -72,10 +70,10 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/typedefTranslator/");
-        yangPluginConfig.setManagerCodeGenDir("target/typedefTranslator/");
         utilManager.translateToJava(yangPluginConfig);
 
         deleteDirectory("target/typedefTranslator/");
-        */
+
     }
+
 }
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/UnionTranslatorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/UnionTranslatorTest.java
index 1d5e548..08db37f 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/UnionTranslatorTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/UnionTranslatorTest.java
@@ -47,7 +47,6 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/UnionTestGenFile/");
-        yangPluginConfig.setManagerCodeGenDir("target/UnionTestGenFile/");
 
         generateJavaCode(node, yangPluginConfig);
 
@@ -71,7 +70,6 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/unionTranslator/");
-        yangPluginConfig.setManagerCodeGenDir("target/unionTranslator/");
 
         utilManager.translateToJava(yangPluginConfig);
         deleteDirectory("target/unionTranslator/");
@@ -94,7 +92,6 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/unionTranslator/");
-        yangPluginConfig.setManagerCodeGenDir("target/unionTranslator/");
 
         utilManager.translateToJava(yangPluginConfig);
         deleteDirectory("target/unionTranslator/");
@@ -117,7 +114,6 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/unionTranslator/");
-        yangPluginConfig.setManagerCodeGenDir("target/unionTranslator/");
 
         utilManager.translateToJava(yangPluginConfig);
         deleteDirectory("target/unionTranslator/");
@@ -140,7 +136,6 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/unionTranslator/");
-        yangPluginConfig.setManagerCodeGenDir("target/unionTranslator/");
 
         utilManager.translateToJava(yangPluginConfig);
         deleteDirectory("target/unionTranslator/");
@@ -163,7 +158,6 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/unionTranslator/");
-        yangPluginConfig.setManagerCodeGenDir("target/unionTranslator/");
 
         utilManager.translateToJava(yangPluginConfig);
         deleteDirectory("target/unionTranslator/");
@@ -187,7 +181,6 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/unionTranslator/");
-        yangPluginConfig.setManagerCodeGenDir("target/unionTranslator/");
 
         utilManager.translateToJava(yangPluginConfig);
         deleteDirectory("target/unionTranslator/");
@@ -211,7 +204,6 @@
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
         yangPluginConfig.setCodeGenDir("target/unionTranslator/");
-        yangPluginConfig.setManagerCodeGenDir("target/unionTranslator/");
 
         utilManager.translateToJava(yangPluginConfig);
         deleteDirectory("target/unionTranslator/");
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/YangXpathLinkerTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/YangXpathLinkerTest.java
index 5dd50ca..a6de459 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/YangXpathLinkerTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/YangXpathLinkerTest.java
@@ -18,6 +18,7 @@
 
 import java.io.IOException;
 import java.util.List;
+
 import org.apache.maven.plugin.MojoExecutionException;
 import org.junit.Test;
 import org.onosproject.yangutils.datamodel.ResolvableType;
@@ -28,22 +29,24 @@
 import org.onosproject.yangutils.linker.impl.YangLinkerManager;
 import org.onosproject.yangutils.linker.impl.YangXpathLinker;
 import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
+import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.Is.is;
 import static org.onosproject.yangutils.linker.impl.YangLinkerUtils.updateFilePriority;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
 
 /**
  * Unit test cases for x-path linker.
  */
 public class YangXpathLinkerTest {
 
-    private YangUtilManager utilManager = new YangUtilManager();
-    private YangXpathLinker linker = new YangXpathLinker();
-    private YangLinkerManager linkerManager = new YangLinkerManager();
     private static final String INTRA_FILE_PATH = "src/test/resources/xPathLinker/IntraFile/";
     private static final String INTER_FILE_PATH = "src/test/resources/xPathLinker/InterFile/";
     private static final String CASE_FILE_PATH = "src/test/resources/xPathLinker/Case/";
+    private YangUtilManager utilManager = new YangUtilManager();
+    private YangXpathLinker linker = new YangXpathLinker();
+    private YangLinkerManager linkerManager = new YangLinkerManager();
 
     /**
      * Unit test case for intra file linking for single level container.
@@ -622,6 +625,7 @@
         linkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
         linkerManager.addRefToYangFilesIncludeList(utilManager.getYangNodeSet());
         updateFilePriority(utilManager.getYangNodeSet());
+
         linkerManager.processInterFileLinking(utilManager.getYangNodeSet());
 
         YangNode targetNode = null;
@@ -649,30 +653,34 @@
     @Test
     public void processInterFileLinkingInMultipleUses() throws IOException {
 
-        /** FIXME: once order of linking is done.
-         utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(CASE_FILE_PATH + "uses/"));
-         utilManager.parseYangFileInfoSet();
-         utilManager.createYangNodeSet();
-         linkerManager.createYangNodeSet(utilManager.getYangNodeSet());
-         linkerManager.linkSubModulesToParentModule(utilManager.getYangNodeSet());
-         linkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
-         linkerManager.addRefToYangFilesIncludeList(utilManager.getYangNodeSet());
-         linkerManager.processInterFileLinking(utilManager.getYangNodeSet());
+        utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(CASE_FILE_PATH + "uses/"));
+        utilManager.parseYangFileInfoSet();
+        utilManager.createYangNodeSet();
+        linkerManager.createYangNodeSet(utilManager.getYangNodeSet());
+        linkerManager.linkSubModulesToParentModule(utilManager.getYangNodeSet());
+        linkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
+        linkerManager.addRefToYangFilesIncludeList(utilManager.getYangNodeSet());
+        updateFilePriority(utilManager.getYangNodeSet());
+        linkerManager.processInterFileLinking(utilManager.getYangNodeSet());
 
-         YangNode targetNode = null;
-         String targetNodeName = null;
+        YangNode targetNode = null;
+        String targetNodeName = null;
 
-         for (YangNode node : utilManager.getYangNodeSet()) {
-         List<YangAugment> augments = linker.getListOfYangAugment(node);
+        for (YangNode node : utilManager.getYangNodeSet()) {
+            List<YangAugment> augments = linker.getListOfYangAugment(node);
 
-         for (YangAugment augment : augments) {
-         targetNodeName = augment.getTargetNode().get(augment.getTargetNode().size() - 1)
-         .getNodeIdentifier().getName();
-         targetNode = augment.getAugmentedNode();
-         }
-         }
+            for (YangAugment augment : augments) {
+                targetNodeName = augment.getTargetNode().get(augment.getTargetNode().size() - 1)
+                        .getNodeIdentifier().getName();
+                targetNode = augment.getAugmentedNode();
+            }
+        }
 
-         assertThat(true, is(targetNode.getName().equals(targetNodeName)));
-         */
+        YangPluginConfig yangPluginConfig = new YangPluginConfig();
+        yangPluginConfig.setCodeGenDir("target/xpath/");
+        utilManager.translateToJava(yangPluginConfig);
+        assertThat(true, is(targetNode.getName().equals(targetNodeName)));
+
+        deleteDirectory("target/xpath/");
     }
 }
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGenTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGenTest.java
index 48655cd..e5021d3 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGenTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGenTest.java
@@ -26,7 +26,7 @@
 import static org.hamcrest.core.Is.is;
 import static org.hamcrest.core.IsNot.not;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getImportText;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaAttributeDefination;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaAttributeDefinition;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaClassDefClose;
 import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
 import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
@@ -53,11 +53,11 @@
     /**
      * Unit test for private constructor.
      *
-     * @throws SecurityException if any security violation is observed
-     * @throws NoSuchMethodException if when the method is not found
-     * @throws IllegalArgumentException if there is illegal argument found
-     * @throws InstantiationException if instantiation is provoked for the private constructor
-     * @throws IllegalAccessException if instance is provoked or a method is provoked
+     * @throws SecurityException         if any security violation is observed
+     * @throws NoSuchMethodException     if when the method is not found
+     * @throws IllegalArgumentException  if there is illegal argument found
+     * @throws InstantiationException    if instantiation is provoked for the private constructor
+     * @throws IllegalAccessException    if instance is provoked or a method is provoked
      * @throws InvocationTargetException when an exception occurs by the method or constructor
      */
     @Test
@@ -65,7 +65,7 @@
             throws SecurityException, NoSuchMethodException, IllegalArgumentException,
             InstantiationException, IllegalAccessException, InvocationTargetException {
 
-        Class<?>[] classesToConstruct = {JavaCodeSnippetGen.class };
+        Class<?>[] classesToConstruct = {JavaCodeSnippetGen.class};
         for (Class<?> clazz : classesToConstruct) {
             Constructor<?> constructor = clazz.getDeclaredConstructor();
             constructor.setAccessible(true);
@@ -102,26 +102,26 @@
     @Test
     public void testForJavaAttributeInfo() {
 
-        String attributeWithoutTypePkg = getJavaAttributeDefination(null, STRING_DATA_TYPE, YANG_NAME,
-                                                                    false, PRIVATE);
+        String attributeWithoutTypePkg = getJavaAttributeDefinition(null, STRING_DATA_TYPE, YANG_NAME,
+                false, PRIVATE);
         assertThat(true, is(attributeWithoutTypePkg.equals(
                 PRIVATE + SPACE + STRING_DATA_TYPE + SPACE + YANG_NAME + SEMI_COLAN + NEW_LINE)));
 
-        String attributeWithTypePkg = getJavaAttributeDefination(JAVA_LANG, STRING_DATA_TYPE, YANG_NAME,
-                                                                 false, PRIVATE);
+        String attributeWithTypePkg = getJavaAttributeDefinition(JAVA_LANG, STRING_DATA_TYPE, YANG_NAME,
+                false, PRIVATE);
         assertThat(true, is(attributeWithTypePkg.equals(PRIVATE + SPACE + JAVA_LANG + PERIOD
                 + STRING_DATA_TYPE + SPACE + YANG_NAME + SEMI_COLAN + NEW_LINE)));
 
-        String attributeWithListPkg = getJavaAttributeDefination(JAVA_LANG, STRING_DATA_TYPE, YANG_NAME,
-                                                                 true, PRIVATE);
-        assertThat(true, is(attributeWithListPkg.equals(
+        String attributeWithListPkg = getJavaAttributeDefinition(JAVA_LANG, STRING_DATA_TYPE, YANG_NAME,
+                true, PRIVATE);
+        assertThat(true, is(attributeWithListPkg.contains(
                 PRIVATE + SPACE + LIST + DIAMOND_OPEN_BRACKET + JAVA_LANG + PERIOD + STRING_DATA_TYPE
-                        + DIAMOND_CLOSE_BRACKET + SPACE + YANG_NAME + SEMI_COLAN + NEW_LINE)));
+                        + DIAMOND_CLOSE_BRACKET + SPACE + YANG_NAME)));
 
-        String attributeWithListWithoutPkg = getJavaAttributeDefination(null, STRING_DATA_TYPE, YANG_NAME,
-                                                                        true, PRIVATE);
-        assertThat(true, is(attributeWithListWithoutPkg.equals(
+        String attributeWithListWithoutPkg = getJavaAttributeDefinition(null, STRING_DATA_TYPE, YANG_NAME,
+                true, PRIVATE);
+        assertThat(true, is(attributeWithListWithoutPkg.contains(
                 PRIVATE + SPACE + LIST + DIAMOND_OPEN_BRACKET + STRING_DATA_TYPE + DIAMOND_CLOSE_BRACKET + SPACE
-                        + YANG_NAME + SEMI_COLAN + NEW_LINE)));
+                        + YANG_NAME)));
     }
 }
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGeneratorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGeneratorTest.java
index cd25b6d..ceebd35 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGeneratorTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGeneratorTest.java
@@ -21,9 +21,9 @@
 
 import org.junit.Test;
 import org.onosproject.yangutils.datamodel.YangType;
+import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
-import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 
 import static org.hamcrest.core.Is.is;
 import static org.hamcrest.core.IsNot.not;
@@ -131,7 +131,7 @@
      */
     @Test
     public void getBuildTest() {
-        String method = getBuild(CLASS_NAME);
+        String method = getBuild(CLASS_NAME, false);
         assertThat(true, is(method.equals(FOUR_SPACE_INDENTATION + PUBLIC + SPACE + CLASS_NAME + SPACE + BUILD
                 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
                 + RETURN + SPACE + NEW + SPACE + "Default" + CLASS_NAME + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS
@@ -177,7 +177,7 @@
     @Test
     public void getConstructorStartTest() {
         YangPluginConfig pluginConfig = new YangPluginConfig();
-        String method = getConstructorStart(CLASS_NAME, pluginConfig);
+        String method = getConstructorStart(CLASS_NAME, pluginConfig, false);
         assertThat(true, is(method.contains(PUBLIC + SPACE + "Default" + CLASS_NAME + OPEN_PARENTHESIS + CLASS_NAME
                 + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT + CLOSE_PARENTHESIS + SPACE
                 + OPEN_CURLY_BRACKET + NEW_LINE)));
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/utils/io/impl/YangIoUtilsTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/utils/io/impl/YangIoUtilsTest.java
index 5b8cddb..393408a 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/utils/io/impl/YangIoUtilsTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/utils/io/impl/YangIoUtilsTest.java
@@ -47,7 +47,7 @@
     private static final String CHECK1 = "check1";
     private static final String PKG_INFO = "package-info.java";
     private static final String PATH = "src/main/yangmodel/";
-    private static final String MSG = "Exception occured while creating package info file.";
+    private static final String MSG = "Exception occurred while creating package info file.";
 
     /**
      * Expected exceptions.
diff --git a/utils/yangutils/plugin/src/test/resources/augmentTranslator/test.yang b/utils/yangutils/plugin/src/test/resources/augmentTranslator/test.yang
index 76ea6c9..3fa36b9 100644
--- a/utils/yangutils/plugin/src/test/resources/augmentTranslator/test.yang
+++ b/utils/yangutils/plugin/src/test/resources/augmentTranslator/test.yang
@@ -31,6 +31,19 @@
         }
      }
 
+    choice choice1 {
+         case case1 {
+              leaf case-leaf {
+                  type int32;
+               }
+              container case-container3 {
+                 leaf leafs {
+                     type int64;
+                 }
+              }  
+         }
+     }
+                    
 
     augment /cont3 {
         leaf leaf1 {
@@ -39,10 +52,28 @@
     }
 
     augment /cont1/cont2 {
-        leaf leaf2 {
+        leaf-list leaf2 {
            type int32;
         }
     }
+    augment /choice1 {
+        leaf-list leaf2 {
+           type int32;
+        }
+        leaf leaf1 {
+           type int32;
+         }
+         container case-container {
+            leaf leafs {
+                 type int64;
+             }
+         }  
+         container case-container2 {
+            leaf leafs {
+                 type int64;
+             }
+         }         
+    }
 
     augment /test1:cont1/test1:cont2 {
        leaf a {
@@ -57,10 +88,25 @@
       }
 
      augment /test1:cont1/test1:cont2/test1:cont1s/test1:cont1s/test2:aa {
-        leaf a {
+        leaf name {
+              type string;
+          }
+        leaf surname {
+              type string;
+          }
+        leaf-list aleaflist {
            type int32;
         }
-        container aa {
+        container cont1 {
+        }
+        list alist {
+          key "name";
+          leaf name {
+              type string;
+          }
+          leaf-list surname {
+              type string;
+          }
         }
      }
 
diff --git a/utils/yangutils/plugin/src/test/resources/xPathLinker/Case/uses/test.yang b/utils/yangutils/plugin/src/test/resources/xPathLinker/Case/uses/test.yang
index e57a468..b326024 100644
--- a/utils/yangutils/plugin/src/test/resources/xPathLinker/Case/uses/test.yang
+++ b/utils/yangutils/plugin/src/test/resources/xPathLinker/Case/uses/test.yang
@@ -2,9 +2,7 @@
     namespace "xpath:intra:single";  
     prefix test ;  
    
-    include test1;
     include test2;
-    include test4;
 
     organization "";  
     contact "";  
@@ -21,11 +19,5 @@
           type int32;
        }
     }
-
-   augment /group1/cont3/cont4/cont8 {
-       leaf a {
-          type int32;
-       }
-    }
 }
     
diff --git a/utils/yangutils/plugin/src/test/resources/xPathLinker/Case/uses/test1.yang b/utils/yangutils/plugin/src/test/resources/xPathLinker/Case/uses/test1.yang
index 2c5dc20..bd75dba 100644
--- a/utils/yangutils/plugin/src/test/resources/xPathLinker/Case/uses/test1.yang
+++ b/utils/yangutils/plugin/src/test/resources/xPathLinker/Case/uses/test1.yang
@@ -4,8 +4,6 @@
          prefix test;
     }           
 
-    include test4;
-
     organization "";  
     contact "";  
        
@@ -35,13 +33,5 @@
        }
     }
 
-     augment /group1/cont3/cont4 {
-        container cont8 {
-          leaf leaf8 {
-             type int32;
-          }
-       }
-    }
-
 }
     
diff --git a/utils/yangutils/plugin/src/test/resources/xPathLinker/Case/uses/test2.yang b/utils/yangutils/plugin/src/test/resources/xPathLinker/Case/uses/test2.yang
index fedb0aa..e42101e 100644
--- a/utils/yangutils/plugin/src/test/resources/xPathLinker/Case/uses/test2.yang
+++ b/utils/yangutils/plugin/src/test/resources/xPathLinker/Case/uses/test2.yang
@@ -3,8 +3,8 @@
          prefix test;
     }
 
+    include test3;
     include test1;
-    include test4;
 
     organization "";  
     contact "";  
@@ -52,5 +52,13 @@
           
        }
     }
+
+     augment /group1/cont3/cont4 {
+        container cont8 {
+          leaf leaf8 {
+             type int32;
+          }
+       }
+    }
 }
     
diff --git a/utils/yangutils/plugin/src/test/resources/xPathLinker/Case/uses/test4.yang b/utils/yangutils/plugin/src/test/resources/xPathLinker/Case/uses/test4.yang
index 589179d..b45bb7d 100644
--- a/utils/yangutils/plugin/src/test/resources/xPathLinker/Case/uses/test4.yang
+++ b/utils/yangutils/plugin/src/test/resources/xPathLinker/Case/uses/test4.yang
@@ -1,10 +1,9 @@
-submodule test4 {  
+submodule test3 {  
 
     belongs-to test {
          prefix test;
     } 
-      
-    include test2;
+    
     organization "";  
     contact "";  
        
@@ -27,11 +26,5 @@
             }
         }
     }
-
-    augment /ethernet/cont11 {
-       leaf leaf11 {
-             type int32;
-       }
-   }
     
 }