diff --git a/tackerclient/shell.py b/tackerclient/shell.py
index bfc29ca7..09611240 100644
--- a/tackerclient/shell.py
+++ b/tackerclient/shell.py
@@ -48,6 +48,7 @@ from tackerclient.i18n import _
 from tackerclient.tacker.v1_0 import extension
 from tackerclient.tacker.v1_0.vm import device
 from tackerclient.tacker.v1_0.vm import device_template
+from tackerclient.tacker.v1_0.vm import vnfd
 from tackerclient.version import __version__
 
 
@@ -113,6 +114,12 @@ COMMAND_V1 = {
     'device-delete': device.DeleteDevice,
     'interface-attach': device.AttachInterface,
     'interface-detach': device.DetachInterface,
+
+    # MANO lingo
+    'vnfd-create': vnfd.CreateVNFD,
+    'vnfd-delete': vnfd.DeleteVNFD,
+    'vnfd-list': vnfd.ListVNFD,
+    'vnfd-show': vnfd.ShowVNFD,
 }
 
 COMMANDS = {'1.0': COMMAND_V1}
diff --git a/tackerclient/tacker/v1_0/vm/vnfd.py b/tackerclient/tacker/v1_0/vm/vnfd.py
new file mode 100644
index 00000000..0eaa0e7c
--- /dev/null
+++ b/tackerclient/tacker/v1_0/vm/vnfd.py
@@ -0,0 +1,82 @@
+#
+# Copyright 2013 Intel
+# Copyright 2013 Isaku Yamahata <isaku.yamahata at intel com>
+#                               <isaku.yamahata at gmail com>
+# All Rights Reserved.
+#
+#
+#    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.
+#
+# @author: Isaku Yamahata, Intel
+
+from tackerclient.tacker import v1_0 as tackerV10
+
+
+_DEVICE_TEMPLATE = "device_template"
+
+
+class ListVNFD(tackerV10.ListCommand):
+    """List VNFD that belong to a given tenant."""
+
+    resource = _DEVICE_TEMPLATE
+
+
+class ShowVNFD(tackerV10.ShowCommand):
+    """show information of a given VNFD."""
+
+    resource = _DEVICE_TEMPLATE
+
+
+class CreateVNFD(tackerV10.CreateCommand):
+    """create a VNFD."""
+
+    resource = _DEVICE_TEMPLATE
+
+    def add_known_arguments(self, parser):
+        parser.add_argument(
+            '--name',
+            help='Set a name for the vnfd')
+        parser.add_argument(
+            '--description',
+            help='Set a description for the vnfd')
+        parser.add_argument(
+            '--vnfd-file',
+            action='append',
+            help='specify vnfd file')
+        parser.add_argument(
+            '--vnfd',
+            action='append',
+            help='specify vnfd')
+
+    def args2body(self, parsed_args):
+        body = {
+            self.resource: {
+                'service_types': [{'service_type': 'vnfd'}],
+                'infra_driver': 'heat',
+                'mgmt_driver': 'noop',
+            }
+        }
+        if parsed_args.vnfd_file:
+            with open(parsed_args.vnfd_file[0]) as f:
+                vnfd = f.read()
+        if parsed_args.vnfd:
+            vnfd = parsed_args.vnfd
+        body[self.resource]['attributes'] = {'vnfd': vnfd}
+        tackerV10.update_dict(parsed_args, body[self.resource],
+                              ['tenant_id', 'name', 'description'])
+        return body
+
+
+class DeleteVNFD(tackerV10.DeleteCommand):
+    """Delete a given VNFD."""
+    resource = _DEVICE_TEMPLATE