   typemappings = 
     number: parseFloat
 
+  installMethod = (scope, methodname, method) ->
+    if methodname of scope
+      # Cheesy override
+      supr = scope[methodname]
+      meth = method
+      scope[methodname] = () ->
+        # console.log 'applying overridden method', methodname, arguments
+        supr.apply(scope, arguments)
+        meth.apply(scope, arguments)
+      # console.log('overrode method', methodname, @, supr, meth)
+    else
+      # console.log('installed method', methodname, @, @[methodname])
+      scope[methodname] = method
+
   class Node extends Module
     @include Events
 

      @types = attributes.types ? {}
      delete attributes.types

      methods = attributes.methods
      # Install methods
      for methodname, method of methods
        if methodname of @
          invoke = () =>
            supr = @[methodname]
            meth = method
            @[methodname] = () =>
              # console.log 'applying overridden method', methodname, arguments
              supr.apply(@, arguments)
              meth.apply(@, arguments)
            # console.log('overrode method', methodname, @, supr, meth)
          invoke()
        else
          # console.log('installed method', methodname, @, @[methodname])
          @[methodname] = method
      delete attributes.methods

      # Bind to event expressions and set attributes

  class Class
    constructor: (el, classattributes = {}) ->
      name = classattributes.name
      extend = classattributes.extends ?= 'view'
      compilertype = classattributes.type
      for ignored of ignoredAttributes
        delete classattributes[ignored]

      processSpecialTags(el, classattributes, compilertype)
      # console.log('compiled class', name, extend, (classattributes))

      # serialize the tag's contents
      body = el.innerHTML
