diff --git a/README.md b/README.md
index f28a117..6082109 100644
--- a/README.md
+++ b/README.md
@@ -38,6 +38,8 @@
      required int32 downlink_speed = 9 [default = 1000000000, null = False, db_index = False, blank = False];
      required bool enable_uverse = 10 [default = True, null = False, db_index = False, blank = True];
      required string status = 11 [default = "enabled", choices = "(('enabled', 'Enabled'), ('suspended', 'Suspended'), ('delinquent', 'Delinquent'), ('copyrightviolation', 'Copyright Violation'))", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+     optional int32 s_tag = 12 [help_text = "s-tag", null = True, db_index = False, blank = False];
+     optional int32 c_tag = 13 [help_text = "c-tag", null = True, db_index = False, blank = False];
 	 }
 ```
 ## GUI Extensions
@@ -45,3 +47,4 @@
 
 * [vtr](https://github.com/opencord/vtr/tree/master/xos/gui)
 * [rcord](https://github.com/opencord/rcord/tree/master/xos/gui)
+*
diff --git a/xos/nose2-plugins/__init__.py b/xos/nose2-plugins/__init__.py
new file mode 100644
index 0000000..42722a8
--- /dev/null
+++ b/xos/nose2-plugins/__init__.py
@@ -0,0 +1,14 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
diff --git a/xos/nose2-plugins/exclude.py b/xos/nose2-plugins/exclude.py
new file mode 100644
index 0000000..241eadb
--- /dev/null
+++ b/xos/nose2-plugins/exclude.py
@@ -0,0 +1,32 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+import logging
+import os
+
+from nose2.events import Plugin
+
+log = logging.getLogger('nose2.plugins.excludeignoredfiles')
+
+class ExcludeIgnoredFiles(Plugin):
+    commandLineSwitch = (None, 'exclude-ignored-files', 'Exclude that which should be excluded')
+
+    def matchPath(self, event):
+        if event.path.endswith(".py"):
+            text = open(event.path, "r").read()
+            if "test_framework: ignore" in text.lower():
+                log.info("Ignoring %s" % event.path)
+                event.handled = True
+                return False
diff --git a/xos/synchronizer/model_policies/model_policy_rcordsubscriber.py b/xos/synchronizer/model_policies/model_policy_rcordsubscriber.py
index af9dba9..570aa7d 100644
--- a/xos/synchronizer/model_policies/model_policy_rcordsubscriber.py
+++ b/xos/synchronizer/model_policies/model_policy_rcordsubscriber.py
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 
-from synchronizers.new_base.modelaccessor import VOLTTenant, ServiceInstanceLink
+from synchronizers.new_base.modelaccessor import VOLTServiceInstance, ServiceInstanceLink
 from synchronizers.new_base.policy import Policy
 
 class RCORDSubscriberPolicy(Policy):
@@ -44,7 +44,7 @@
             # we don't know what the next service in the chain will be
 
             if ps.model_name is "VOLTService":
-                volt = VOLTTenant(name="volt-for-subscriber-%s" % si.id)
+                volt = VOLTServiceInstance(name="volt-for-subscriber-%s" % si.id)
                 volt.save()
 
                 si_link = ServiceInstanceLink(
diff --git a/xos/synchronizer/model_policies/test_model_policy_rcordsubscriber.py b/xos/synchronizer/model_policies/test_model_policy_rcordsubscriber.py
index ea88667..eb89d2a 100644
--- a/xos/synchronizer/model_policies/test_model_policy_rcordsubscriber.py
+++ b/xos/synchronizer/model_policies/test_model_policy_rcordsubscriber.py
@@ -108,7 +108,7 @@
         si.owner = owner
 
         with patch.object(owner.subscribed_dependencies, 'all', MagicMock(return_value=[MockLink()])), \
-             patch.object(VOLTTenant, "save", autospec=True) as save_volt, \
+             patch.object(VOLTServiceInstance, "save", autospec=True) as save_volt, \
              patch.object(ServiceInstanceLink, "save", autospec=True) as save_link:
             self.policy.handle_create(si)
             self.assertEqual(save_link.call_count, 1)
diff --git a/xos/unittest.cfg b/xos/unittest.cfg
new file mode 100644
index 0000000..71be7ca
--- /dev/null
+++ b/xos/unittest.cfg
@@ -0,0 +1,5 @@
+[unittest]
+plugins=nose2-plugins.exclude
+code-directories=synchronizer
+                 model_policies
+                 steps
