 
   one: (fun) ->
     @event.one(fun)
+
+  # Find all properties which are dependent upon this one
+  def @prototype, "dependents", get: ->
+    deps = []
+    findDependencies = (name) =>
+      for property in @object._s_properties
+        if property.name not in deps and name in property.localDependencies
+          deps.push(property.name)
+          findDependencies(property.name)
+    findDependencies(@name)
+    deps
 
   def @prototype, "listeners", get: ->
     @event.listeners

        globalDependencies[subname].push({ @object, subname, name, type, dependency: @name })

  trigger: ->
    names = [@name].concat(@dependents())
    changes = {}
    changes[name] = @object[name] for name in names
    @object.changed?.trigger?(changes)

    else
      @get()

  registerGlobal: ->
    unless @object["_s_glb_" + @name]
      def @object, "_s_glb_" + @name, value: true, configurable: true
