code: function (methodName) {
              var oldy = this[methodName], self = this
              // overwrite the orig method
              this[methodName] = function() {
                  var args              = [].slice.call(arguments)
                  ,   beforeObj         = args[0] 
                  ,   oldCallback       = args[args.length - 1]
                  ,   overwroteCallback = false
                  
                  // call before with obj
                  this.fire('before', methodName, beforeObj)
  
                  if (typeof oldCallback === 'function') {
                      // overwrite final callback with after method injection 
                      args[args.length - 1] = function(record) {
                          oldCallback.call(self, record)
                          self.fire('after', methodName, record)
                      }
                      overwroteCallback = true
                  }
  
                  // finally call the orig method
                  oldy.apply(self, args)
  
                  // if there was no callback to override for after we invoke here
                  if (!overwroteCallback) 
                      self.fire('after', methodName, beforeObj)
              }
          }
docs: TODO make private? rewrites a method with before/after callback capability