diff --git a/netconf/capabilities.py b/netconf/capabilities.py
index 80fe63d..b033131 100755
--- a/netconf/capabilities.py
+++ b/netconf/capabilities.py
@@ -18,12 +18,11 @@
 import sys
 from constants import Constants as C
 
-# URN_PREFIX = "urn:ietf:params:netconf:capability:"
 URN_PREFIX = "urn:opencord:params:xml:ns:voltha:"
 log = structlog.get_logger()
 
-class Capabilities:
 
+class Capabilities:
     def __init__(self):
         self.server_caps = set()
         self.client_caps = set()
@@ -41,10 +40,14 @@
         self.server_caps.add(C.NETCONF_MONITORING)
         for schema in schemas:
             self.server_caps.add(''.join([URN_PREFIX, schema]))
+            self.server_caps.add(''.join([
+                                            URN_PREFIX,
+                                            schema,
+                                            ':writable-running'])
+                                )
             self.voltha_schemas.add(schema)
 
-
-    def set_schema_dir(self, schema_dir)        :
+    def set_schema_dir(self, schema_dir):
         self.schema_dir = schema_dir
 
     def get_yang_schemas_definitions(self):
@@ -53,18 +56,18 @@
             defs.append(
                 {
                     'id': schema,
-                    'version': '2016-11-15', #TODO: need to extract from voltha
+                    'version': '2016-11-15',
+                    # TODO: need to extract from voltha
                     'format': 'yang',
                     'location': 'NETCONF',
                     'namespace': ''.join([URN_PREFIX, schema])
-                 }
+                }
             )
         return defs
 
     def is_schema_supported(self, schema):
         return schema in self.voltha_schemas
 
-
     def get_schema_content(self, schema):
         if self.schema_dir not in sys.path:
             sys.path.insert(0, self.schema_dir)
@@ -77,4 +80,3 @@
         except Exception as e:
             log.error("error-opening-file", file=''.join([schema, '.yang']),
                       dir=self.schema_dir, exception=repr(e))
-
