diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/datamodel/YangLeaf.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/datamodel/YangLeaf.java
index 888094e..a2e5ab5 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/datamodel/YangLeaf.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/datamodel/YangLeaf.java
@@ -18,7 +18,7 @@
 
 import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
 import org.onosproject.yangutils.parser.Parsable;
-import org.onosproject.yangutils.parser.ParsableDataType;
+import org.onosproject.yangutils.utils.YangConstructType;
 
 /*
  * Reference:RFC 6020.
@@ -108,7 +108,7 @@
     /**
      * Get the name of leaf.
      *
-     * @return the leaf name.
+     * @return the leaf name
      */
     public String getLeafName() {
         return name;
@@ -117,7 +117,7 @@
     /**
      * Set the name of leaf.
      *
-     * @param leafName the leaf name to set.
+     * @param leafName the leaf name to set
      */
     public void setLeafName(String leafName) {
         name = leafName;
@@ -126,7 +126,7 @@
     /**
      * Get the config flag.
      *
-     * @return if config flag.
+     * @return if config flag
      */
     public Boolean isConfig() {
         return isConfig;
@@ -135,7 +135,7 @@
     /**
      * Set the config flag.
      *
-     * @param isCfg the flag value to set.
+     * @param isCfg the flag value to set
      */
     public void setConfig(boolean isCfg) {
         isConfig = isCfg;
@@ -144,7 +144,7 @@
     /**
      * Get the description.
      *
-     * @return the description.
+     * @return the description
      */
     @Override
     public String getDescription() {
@@ -154,7 +154,7 @@
     /**
      * Set the description.
      *
-     * @param description set the description.
+     * @param description set the description
      */
     @Override
     public void setDescription(String description) {
@@ -164,7 +164,7 @@
     /**
      * Get if the leaf is mandatory.
      *
-     * @return if leaf is mandatory.
+     * @return if leaf is mandatory
      */
     public boolean isMandatory() {
         return isMandatory;
@@ -182,7 +182,7 @@
     /**
      * Get the textual reference.
      *
-     * @return the reference.
+     * @return the reference
      */
     @Override
     public String getReference() {
@@ -192,7 +192,7 @@
     /**
      * Set the textual reference.
      *
-     * @param reference the reference to set.
+     * @param reference the reference to set
      */
     @Override
     public void setReference(String reference) {
@@ -202,7 +202,7 @@
     /**
      * Get the status.
      *
-     * @return the status.
+     * @return the status
      */
     @Override
     public YangStatusType getStatus() {
@@ -212,7 +212,7 @@
     /**
      * Set the status.
      *
-     * @param status the status to set.
+     * @param status the status to set
      */
     @Override
     public void setStatus(YangStatusType status) {
@@ -222,7 +222,7 @@
     /**
      * Get the units.
      *
-     * @return the units.
+     * @return the units
      */
     public String getUnits() {
         return units;
@@ -231,7 +231,7 @@
     /**
      * Set the units.
      *
-     * @param units the units to set.
+     * @param units the units to set
      */
     public void setUnits(String units) {
         this.units = units;
@@ -240,7 +240,7 @@
     /**
      * Get the data type.
      *
-     * @return the data type.
+     * @return the data type
      */
     public YangType<?> getDataType() {
         return dataType;
@@ -249,7 +249,7 @@
     /**
      * Set the data type.
      *
-     * @param dataType the data type to set.
+     * @param dataType the data type to set
      */
     public void setDataType(YangType<?> dataType) {
         this.dataType = dataType;
@@ -258,17 +258,17 @@
     /**
      * Returns the type of the parsed data.
      *
-     * @return returns LEAF_DATA.
+     * @return returns LEAF_DATA
      */
     @Override
-    public ParsableDataType getParsableDataType() {
-        return ParsableDataType.LEAF_DATA;
+    public YangConstructType getYangConstructType() {
+        return YangConstructType.LEAF_DATA;
     }
 
     /**
      * Validate the data on entering the corresponding parse tree node.
      *
-     * @throws DataModelException a violation of data model rules.
+     * @throws DataModelException a violation of data model rules
      */
     @Override
     public void validateDataOnEntry() throws DataModelException {
@@ -279,7 +279,7 @@
     /**
      * Validate the data on exiting the corresponding parse tree node.
      *
-     * @throws DataModelException a violation of data model rules.
+     * @throws DataModelException a violation of data model rules
      */
     @Override
     public void validateDataOnExit() throws DataModelException {
