diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/datamodel/YangEnum.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/datamodel/YangEnum.java
index 76ab0f3..dd79b65 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/datamodel/YangEnum.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/datamodel/YangEnum.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;
 
 import java.util.Objects;
 
@@ -73,7 +73,7 @@
     private YangStatusType status;
 
     /**
-     * value of ENUM.
+     * Value of ENUM.
      */
     private int value;
 
@@ -87,7 +87,7 @@
     /**
      * Get the named value.
      *
-     * @return the named value.
+     * @return the named value
      */
     public String getNamedValue() {
         return namedValue;
@@ -96,7 +96,7 @@
     /**
      * Set the named value.
      *
-     * @param namedValue the named value to set.
+     * @param namedValue the named value to set
      */
     public void setNamedValue(String namedValue) {
         this.namedValue = namedValue;
@@ -105,7 +105,7 @@
     /**
      * Get the description.
      *
-     * @return the description.
+     * @return the description
      */
     @Override
     public String getDescription() {
@@ -115,7 +115,7 @@
     /**
      * Set the description.
      *
-     * @param description set the description.
+     * @param description set the description
      */
     @Override
     public void setDescription(String description) {
@@ -125,7 +125,7 @@
     /**
      * Get the textual reference.
      *
-     * @return the reference.
+     * @return the reference
      */
     @Override
     public String getReference() {
@@ -135,7 +135,7 @@
     /**
      * Set the textual reference.
      *
-     * @param reference the reference to set.
+     * @param reference the reference to set
      */
     @Override
     public void setReference(String reference) {
@@ -145,7 +145,7 @@
     /**
      * Get the status.
      *
-     * @return the status.
+     * @return the status
      */
     @Override
     public YangStatusType getStatus() {
@@ -155,7 +155,7 @@
     /**
      * Set the status.
      *
-     * @param status the status to set.
+     * @param status the status to set
      */
     @Override
     public void setStatus(YangStatusType status) {
@@ -165,7 +165,7 @@
     /**
      * Get the value.
      *
-     * @return the value.
+     * @return the value
      */
     public int getValue() {
         return value;
@@ -174,7 +174,7 @@
     /**
      * Set the value.
      *
-     * @param value the value to set.
+     * @param value the value to set
      */
     public void setValue(int value) {
         this.value = value;
@@ -186,8 +186,8 @@
      * @return ParsedDataType returns ENUM_DATA
      */
     @Override
-    public ParsableDataType getParsableDataType() {
-        return ParsableDataType.ENUM_DATA;
+    public YangConstructType getYangConstructType() {
+        return YangConstructType.ENUM_DATA;
     }
 
     @Override
@@ -210,7 +210,7 @@
     /**
      * 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 {
@@ -220,7 +220,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 {
