Class and object dependencies, schedules
diff --git a/planetstack/observer/syncstep.py b/planetstack/observer/syncstep.py
index b206106..f3eb4ba 100644
--- a/planetstack/observer/syncstep.py
+++ b/planetstack/observer/syncstep.py
@@ -2,6 +2,9 @@
 import base64
 from planetstack.config import Config
 
+class FailedDependency(Exception):
+	pass
+
 class SyncStep:
 	""" A PlanetStack Sync step. 
 
@@ -24,6 +27,7 @@
 		   		name -- Name of the step
 				provides -- PlanetStack models sync'd by this step
 		"""
+		dependencies = []
 		try:
 			self.soft_deadline = int(self.get_prop('soft_deadline_seconds'))
 		except:
@@ -33,9 +37,26 @@
 
 	def fetch_pending(self):
 		return Sliver.objects.filter(ip=None)
+	
+	def check_dependencies(self, obj):
+		for dep in dependencies:
+			peer_object = getattr(obj, dep.name.lowercase())
+			if (peer_object.pk==dep.pk):
+				raise DependencyFailed
 
-	def call(self):
-		return True
+	def call(self, failed=failed_objects):
+		pending = self.fetch_pending()
+		failed = []
+		for o in pending:
+			if (not self.depends_on(o, failed)):
+				try:
+					check_dependencies(o) # Raises exception if failed					
+					self.sync_record(o)
+					o.enacted = datetime.now() # Is this the same timezone? XXX
+					o.save(update_fields=['enacted'])
+				except:
+					failed.append(o)
+		return failed
 
 	def __call__(self):
 		return self.call()