var mag = (function(self, module, render, document, undefined) {

  'use strict'

  var privates = {}

  privates.init = function(container, data) {
    if (!(this instanceof privates.init)) return new privates.init(container, data);
    var instance = this;
    console.log('mag init')
  }

  privates.redraw=function(){
    render.redraw( module || render.module || {})
  }

  privates.prop = function(store) {
    var prop = function() {
      if (arguments.length) {
        store = arguments[0]
        render.redraw(module)
      }
      return store
    }

    prop.toJSON = function() {
      // return a copy
      return JSON.parse(JSON.stringify(store))
    }

    return prop
  }


  privates.module = function(domElementId, moduleObject, props) {
    console.time("MagnumJS:init")

    var index = render.roots.indexOf(domElementId);
    if (index < 0) index = render.roots.length;

    //DOM
    var element = document.getElementById(domElementId)
    if (!element) throw new Error('invalid node')
    var parentElement = element.parentNode
    var elementClone = element.cloneNode(true)

    var tempEle = document.createElement("span")
    parentElement.replaceChild(tempEle, element)

    //MODULE
    var mod = module.submodule(moduleObject, [props])

    render.roots[index] = domElementId
    var controller = new mod.controller

    module.controllers[index] = controller
    module.modules[index] = mod
    module.elements[index] = elementClone
    //INTERPOLATIONS
    render.redraw(module)

    //DOM
    parentElement.replaceChild(elementClone, tempEle)

    // call onload if present in controller
    if (controller.onload) controller.onload.call(null, elementClone)
  }

  var interfaces = function(method) {
    return function() {
      return privates[method].apply(this, arguments)
    }
  }

  var api = interfaces('init')

  api['module'] = interfaces('module')
  api['prop'] = interfaces('prop')
  api['redraw'] = interfaces('redraw')

  return api
})(mag = mag || {}, mod, render, document);

@@ -22,24 +22,8 @@
 elf,
- module, render,
  doc
@@ -78,18 +78,152 @@
 tes = %7B%7D
-%0A%0A
+,%0A    module = self.mod,%0A    render = self.render,%0A    fill = self.fill,%0A    watch = mag.watch%0A%0A    // REMOVE THIS? why is this here?%0A  
   privat
@@ -260,19 +260,25 @@
 data) %7B%0A
+%0A  
    
+ //
  if (!(t
@@ -349,21 +349,25 @@
 r, data)
-;
 %0A   
+   //
  var ins
@@ -378,21 +378,25 @@
 e = this
-;
 %0A
+ 
    
+  //
  console
@@ -412,16 +412,18 @@
  init')%0A
+  
   %7D%0A%0A  p
@@ -436,17 +436,19 @@
 s.redraw
-=
+ = 
 function
@@ -449,16 +449,17 @@
 nction()
+ 
 %7B%0A    re
@@ -470,17 +470,16 @@
 .redraw(
- 
 module %7C
@@ -499,16 +499,29 @@
 le %7C%7C %7B%7D
+, fill, watch
 )%0A  %7D%0A%0A 
@@ -646,38 +646,40 @@
 %5B0%5D%0A        
-render
+privates
 .redraw(
 module)%0A    
@@ -666,22 +666,16 @@
 .redraw(
-module
 )%0A      
@@ -698,24 +698,47 @@
 tore%0A    %7D%0A%0A
+    prop.type = 'fun'%0A%0A
     prop.toJ
@@ -854,17 +854,16 @@
 op%0A  %7D%0A%0A
-%0A
   privat
@@ -1172,16 +1172,17 @@
  node')%0A
+%0A
     var 
@@ -1649,38 +1649,40 @@
 LATIONS%0A    
-render
+privates
 .redraw(
 module)%0A%0A   
@@ -1669,22 +1669,16 @@
 .redraw(
-module
 )%0A%0A    /
@@ -2145,17 +2145,18 @@
 api%0A
-%7D)(mag = 
+%0A%7D(window.
 mag 
@@ -2165,21 +2165,8 @@
  %7B%7D,
- mod, render,
  doc
@@ -2171,10 +2171,10 @@
 ocument)
-;
+)
 %0A

Update mag.js