diff --git a/planetstack/ec2_observer/steps/sync_sites.py b/planetstack/ec2_observer/steps/sync_sites.py
index 5771aef..7a5c0dc 100644
--- a/planetstack/ec2_observer/steps/sync_sites.py
+++ b/planetstack/ec2_observer/steps/sync_sites.py
@@ -2,20 +2,27 @@
 import base64
 from django.db.models import F, Q
 from planetstack.config import Config
-from observer.syncstep import SyncStep
-from core.models.site import Site
+from ec2_observer.syncstep import SyncStep
+from core.models.site import *
 from ec2_observer.awslib import *
+import pdb
 
 class SyncSites(SyncStep):
-    provides=[Site]
-    requested_interval=3600
+	provides=[Site]
+	requested_interval=3600
 
-    def fetch_pending(self):
-		current_sites = Site.objects.all()
-		zones = aws_run('ec2 describe-availability-zones')
+	def fetch_pending(self, deletion):
+
+		deployment = Deployment.objects.filter(Q(name="Amazon EC2"))[0]
+		current_site_deployments = SiteDeployments.objects.filter(Q(deployment=deployment))
+
+		zone_ret = aws_run('ec2 describe-availability-zones')
+		zones = zone_ret['AvailabilityZones']
+
 		available_sites = [zone['ZoneName'] for zone in zones]
+		site_names = [sd.site.name for sd in current_site_deployments]
 
-		new_site_names = list(set(available_sites) - set(zones))
+		new_site_names = list(set(available_sites) - set(site_names))
 
 		new_sites = []
 		for s in new_site_names:
@@ -27,8 +34,8 @@
 						abbreviated_name=s)
 			new_sites.append(site)
 		
-        return new_sites
+		return new_sites
 
-    def sync_record(self, site):
-        site.save()
+	def sync_record(self, site):
+		site.save()
 
