diff --git a/planetstack/ec2_observer/steps/sync_slivers.py b/planetstack/ec2_observer/steps/sync_slivers.py
index b576bbc..2079859 100644
--- a/planetstack/ec2_observer/steps/sync_slivers.py
+++ b/planetstack/ec2_observer/steps/sync_slivers.py
@@ -1,91 +1,103 @@
 import os
+import json
 import base64
 from django.db.models import F, Q
 from planetstack.config import Config
-from observer.openstacksyncstep import OpenStackSyncStep
+from ec2_observer.syncstep import SyncStep
 from core.models.sliver import Sliver
 from core.models.slice import SlicePrivilege, SliceDeployments
 from core.models.network import Network, NetworkSlice, NetworkDeployments
 from util.logger import Logger, logging
+from ec2_observer.awslib import *
+from core.models.site import *
+from core.models.slice import *
+import pdb
 
 logger = Logger(level=logging.INFO)
 
-class SyncSlivers(OpenStackSyncStep):
-    provides=[Sliver]
-    requested_interval=0
+class SyncSlivers(SyncStep):
+	provides=[Sliver]
+	requested_interval=0
 
-    def fetch_pending(self):
-        return Sliver.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
+	def fetch_pending(self, deletion):
+		all_slivers = Sliver.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
+		my_slivers = []	
 
-    def sync_record(self, sliver):
-        logger.info("sync'ing sliver:%s deployment:%s " % (sliver, sliver.node.deployment))
-        metadata_update = {}
-        if ("numberCores" in sliver.changed_fields):
-            metadata_update["cpu_cores"] = str(sliver.numberCores)
+		for sliver in all_slivers:
+			sd = SliceDeployments.objects.filter(Q(slice=sliver.slice))
+			if (sd):
+				if (sd.deployment.name=='Amazon EC2'):
+					my_slivers.append(sliver)
+			if (sliver.node.deployment.name=='Amazon EC2'):
+				my_slivers.append(sliver)
+		return my_slivers
 
-        for tag in sliver.slice.tags.all():
-            if tag.name.startswith("sysctl-"):
-                metadata_update[tag.name] = tag.value
+	def sync_record(self, sliver):
+		logger.info("sync'ing sliver:%s deployment:%s " % (sliver, sliver.node.deployment))
 
-        if not sliver.instance_id:
-            driver = self.driver.client_driver(caller=sliver.creator, tenant=sliver.slice.name, deployment=sliver.deploymentNetwork.name)
-            # public keys
-            slice_memberships = SlicePrivilege.objects.filter(slice=sliver.slice)
-            pubkeys = [sm.user.public_key for sm in slice_memberships if sm.user.public_key]
-            if sliver.creator.public_key:
-                pubkeys.append(sliver.creator.public_key)
-            if sliver.slice.creator.public_key:
-                pubkeys.append(sliver.slice.creator.public_key) 
-            # netowrks
-            # include all networks available to the slice and/or associated network templates
-            nics = []
-            networks = [ns.network for ns in NetworkSlice.objects.filter(slice=sliver.slice)]   
-            network_deployments = NetworkDeployments.objects.filter(network__in=networks, 
-                                                                    deployment=sliver.node.deployment)
-            # Gather private networks first. This includes networks with a template that has
-            # visibility = private and translation = none
-            for network_deployment in network_deployments:
-                if network_deployment.network.template.visibility == 'private' and \
-                   network_deployment.network.template.translation == 'none': 
-                    nics.append({'net-id': network_deployment.net_id})
-    
-            # now include network template
-            network_templates = [network.template.sharedNetworkName for network in networks \
-                                 if network.template.sharedNetworkName]
-            for net in driver.shell.quantum.list_networks()['networks']:
-                if net['name'] in network_templates: 
-                    nics.append({'net-id': net['id']}) 
+		if not sliver.instance_id:
+			# public keys
+			slice_memberships = SlicePrivilege.objects.filter(slice=sliver.slice)
+			pubkeys = [sm.user.public_key for sm in slice_memberships if sm.user.public_key]
 
-            file("/tmp/scott-manager","a").write("slice: %s\nreq: %s\n" % (str(sliver.slice.name), str(nics)))
-         
-            # look up image id
-            deployment_driver = self.driver.admin_driver(deployment=sliver.deploymentNetwork.name)
-            image_id = None
-            images = deployment_driver.shell.glance.get_images()
-            for image in images:
-                if image['name'] == sliver.image.name:
-                    image_id = image['id']
-                    
-            # look up key name at the deployment
-            # create/fetch keypair
-            keyname = None
-            if sliver.creator.public_key:
-                keyname = sliver.creator.email.lower().replace('@', 'AT').replace('.', '') +\
-                          sliver.slice.name
-                key_fields =  {'name': keyname,
-                               'public_key': sliver.creator.public_key}
-                driver.create_keypair(**key_fields)       
- 
-            instance = driver.spawn_instance(name=sliver.name,
-                                key_name = keyname,
-                                image_id = image_id,
-                                hostname = sliver.node.name,
-                                pubkeys = pubkeys,
-                                nics = nics )
-            sliver.instance_id = instance.id
-            sliver.instance_name = getattr(instance, 'OS-EXT-SRV-ATTR:instance_name')
-            sliver.save()    
+			if sliver.creator.public_key:
+				pubkeys.append(sliver.creator.public_key)
 
-        if sliver.instance_id and metadata_update:
-            driver.update_instance_metadata(sliver.instance_id, metadata_update)
+			if sliver.slice.creator.public_key:
+				pubkeys.append(sliver.slice.creator.public_key) 
+
+			# netowrks
+			# include all networks available to the slice and/or associated network templates
+			#nics = []
+			#networks = [ns.network for ns in NetworkSlice.objects.filter(slice=sliver.slice)]	
+			#network_deployments = NetworkDeployments.objects.filter(network__in=networks, 
+																	#deployment=sliver.node.deployment)
+			# Gather private networks first. This includes networks with a template that has
+			# visibility = private and translation = none
+			#for network_deployment in network_deployments:
+			#	if network_deployment.network.template.visibility == 'private' and \
+			#	   network_deployment.network.template.translation == 'none': 
+			#		nics.append({'net-id': network_deployment.net_id})
+	
+			# now include network template
+			#network_templates = [network.template.sharedNetworkName for network in networks \
+			#					 if network.template.sharedNetworkName]
+			#for net in driver.shell.quantum.list_networks()['networks']:
+			#	if net['name'] in network_templates: 
+			#		nics.append({'net-id': net['id']}) 
+			# look up image id
+
+			instance_type = sliver.node.name.rsplit('.',1)[0]
+
+			# Bail out of we don't have a key
+			key_name = sliver.creator.email.lower().replace('@', 'AT').replace('.', '')
+			key_sig = aws_run('ec2 describe-key-pairs')
+			ec2_keys = key_sig['KeyPairs']
+			key_found = False
+			for key in ec2_keys:
+				if (key['KeyName']==key_name):
+					key_found = True
+					break
+
+			if (not key_found):
+				# set backend_status
+				raise Exception('Will not sync sliver without key')
+
+			image_id = sliver.image.path
+			instance_sig = aws_run('ec2 run-instances --image-id %s --instance-type %s --count 1 --key-name %s --placement AvailabilityZone=%s'%(image_id,instance_type,key_name,sliver.node.site.name))
+			sliver.instance_id = instance_sig['Instances'][0]['InstanceId']
+			sliver.save()
+			state = instance_sig['Instances'][0]['State']['Code']
+			if (state==16):
+				sliver.ip = instance_sig['Instances'][0]['PublicIpAddress']
+				sliver.save()
+			else:
+				# This status message should go into backend_status
+				raise Exception('Waiting for instance to start')
+		else:
+			ret = aws_run('ec2 describe-instances --instance-ids %s'%sliver.instance_id)
+			state = ret['Reservations'][0]['Instances'][0]['State']['Code']
+			if (state==16):
+				sliver.ip = ret['Reservations'][0]['Instances'][0]['PublicIpAddress']
+				sliver.save()
 
