diff --git a/xos/synchronizer/model_policies/model_policy_internetemulatorserviceinstance.py b/xos/synchronizer/model_policies/model_policy_internetemulatorserviceinstance.py
index b34b121..5cc435c 100644
--- a/xos/synchronizer/model_policies/model_policy_internetemulatorserviceinstance.py
+++ b/xos/synchronizer/model_policies/model_policy_internetemulatorserviceinstance.py
@@ -19,3 +19,29 @@
 
 class InternetEmulatorServiceInstancePolicy(TenantWithContainerPolicy):
     model_name = "InternetEmulatorServiceInstance"
+    constrain_by_service_instance = True
+
+    def handle_create(self, service_instance):
+        return self.handle_update(service_instance)
+
+    def handle_update(self, service_instance):
+        if (service_instance.link_deleted_count>0) and (not service_instance.provided_links.exists()):
+            self.logger.info("The last provided link has been deleted -- self-destructing.")
+            self.handle_delete(service_instance)
+            if InternetEmulatorServiceInstance.objects.filter(id=service_instance.id).exists():
+                service_instance.delete()
+            else:
+                self.logger.info("Tenant %s is already deleted" % service_instance)
+            return
+
+        self.manage_container(service_instance)
+
+    def handle_delete(self, service_instance):
+        if service_instance.instance and (not service_instance.instance.deleted):
+            all_service_instances_this_instance = InternetEmulatorServiceInstance.objects.filter(instance_id=service_instance.instance.id)
+            other_service_instances_this_instance = [x for x in all_service_instances_this_instance if x.id != service_instance.id]
+            if (not other_service_instances_this_instance):
+                self.logger.info("InternetEmulatorServiceInstance Instance %s is now unused -- deleting" % service_instance.instance)
+                service_instance.instance.delete()
+            else:
+                self.logger.info("InternetEmulatorServiceInstance Instance %s has %d other service instances attached" % (service_instance.instance, len(other_service_instances_this_instance)))
diff --git a/xos/synchronizer/steps/internetemulatorserviceinstance_playbook.yaml b/xos/synchronizer/steps/internetemulatorserviceinstance_playbook.yaml
index 1160869..df2316e 100644
--- a/xos/synchronizer/steps/internetemulatorserviceinstance_playbook.yaml
+++ b/xos/synchronizer/steps/internetemulatorserviceinstance_playbook.yaml
@@ -23,5 +23,5 @@
   sudo: no
   gather_facts: no
 
-  tasks:
-    ping:
+  roles:
+    - start_video_server
diff --git a/xos/synchronizer/steps/roles/start_video_server/defaults/main.yml b/xos/synchronizer/steps/roles/start_video_server/defaults/main.yml
new file mode 100644
index 0000000..43342fa
--- /dev/null
+++ b/xos/synchronizer/steps/roles/start_video_server/defaults/main.yml
@@ -0,0 +1,20 @@
+
+# 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.
+
+---
+
+video_streaming_port: 8080
+video_streaming_url: video
+ttl: 1
\ No newline at end of file
diff --git a/xos/synchronizer/steps/roles/start_video_server/tasks/main.yml b/xos/synchronizer/steps/roles/start_video_server/tasks/main.yml
new file mode 100644
index 0000000..99ed9a9
--- /dev/null
+++ b/xos/synchronizer/steps/roles/start_video_server/tasks/main.yml
@@ -0,0 +1,21 @@
+
+# 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.
+
+---
+
+- name: start video streaming VLC server
+  command: vlc -I dummy demo-video.mp4 --sout='#rtp{sdp=rtsp://:{{ video_streaming_port }}/{{ video_streaming_url }}}' --sout-keep --loop --ttl {{ ttl }}
+  async: 1000
+  poll: 0
\ No newline at end of file
