       findBindings: findBindings
 
 
+  # a list of constraint scopes gathered at init time
+  constraintScopes = []
+  # init constraints
+  _initConstraints = ->
+    for constraint in constraintScopes
+      constraint._bindConstraints()
+    constraintScopes = []
+
   class Node extends Eventable
     matchConstraint = /\${(.+)}/
 


      # console.log 'new node', @, attributes
      @sendEvent('init', @)

    # generate a callback for an event expression in a way that preserves scope, e.g. on_x="console.log(value, this, ...)"
    eventCallback = (name, script, scope, fnargs=['value']) ->

    # initialize an element
    initFromElement = (el) ->
      initElement(el)
      for child of _children
        {name, el, attributes} = child
        console.log name, el, attributes
        parent = new lz[name](el, attributes)
      _children = []

      _initConstraints()


    specialtags = ['handler', 'method', 'attribute', 'setter']
    # recursively init classes based on an existing element
