diff --git a/model/src/main/java/org/onosproject/yang/model/LeafNode.java b/model/src/main/java/org/onosproject/yang/model/LeafNode.java
index 3dab637..e0d0859 100644
--- a/model/src/main/java/org/onosproject/yang/model/LeafNode.java
+++ b/model/src/main/java/org/onosproject/yang/model/LeafNode.java
@@ -36,6 +36,11 @@
     private String valueNamespace;
 
     /**
+     * Type of leaf.
+     */
+    private LeafType leafType;
+
+    /**
      * Returns value contained in leaf node.
      *
      * @return value contained in leaf node
@@ -54,6 +59,15 @@
     }
 
     /**
+     * Returns type of leaf.
+     *
+     * @return type of leaf
+     */
+    public LeafType leafType() {
+        return leafType;
+    }
+
+    /**
      * Returns value as string, for usage in serializers.
      *
      * @return string representation of value
@@ -68,6 +82,7 @@
                     "key=" + key() + ", " +
                     "value=" + asString() +
                     "valueNamespace=" + valueNamespace() +
+                    "leafType=" + leafType.toString() +
                "}";
     }
 
@@ -80,6 +95,7 @@
         super(builder);
         value = builder.value;
         valueNamespace = builder.valueNamespace;
+        leafType = builder.leafType;
     }
 
     /**
@@ -122,6 +138,11 @@
         private String valueNamespace;
 
         /**
+         * Type of leaf.
+         */
+        private LeafType leafType;
+
+        /**
          * Creates an instance of data node builder.
          *
          * @param name      name of node
@@ -140,6 +161,7 @@
             super(node);
             value = node.value;
             valueNamespace = node.valueNamespace;
+            leafType = node.leafType;
         }
 
         /**
@@ -164,6 +186,17 @@
             return this;
         }
 
+        /**
+         * Sets leaf type of leaf node builder.
+         *
+         * @param leafType type of leaf
+         * @return leaf node builder
+         */
+        public Builder leafType(LeafType leafType) {
+            this.leafType = leafType;
+            return this;
+        }
+
         @Override
         public InnerNode.Builder createChildBuilder(String name, String nameSpace) {
             throw new IllegalStateException("leaf node can't have a child " +
