             index: ind }))
 
   _runCallbacks: () =>
-    @_cooked.forEach((food) =>
-      optarg = food.cb.apply(@, [food.optarg])
-      food.names.forEach((name) =>
-        yummy = optarg
-        @_eaten[name] = yummy))
+    @_cooked.forEach((opt) =>
+      arg = opt.cb.apply(@, [opt.arg])
+      @_eaten[opt.name] = arg
+      if opt.child isnt null
+        @_eaten[opt.child.name] = arg
+      if opt.parent isnt null
+        @_eaten[opt.parent.name] = arg)
 
   _clean: () =>
     Object.keys(@).forEach((key) =>
       if /^_/.test(key)
-        [
-          '_runCallbacks',
-          '_log',
-          '_raw',
-          '_cooked',
-          '_eaten',
-          '_help'
-        ].forEach((target) =>
-          if key isnt target
-            delete @[key]))
-    return @
+        switch key
+          when '_runCallbacks'
+            null
+          when '_raw'
+            null
+          when '_cooked'
+            null
+          when '_eaten'
+            null
+          when '_help'
+            null
+          else
+            delete @[key])
 
   parse: () =>
     @_makeHelp()
     @_gather()
     @_resolveOpts()
-    #@_runCallbacks()
+    @_clean()
+    @_runCallbacks()
+    return @_eaten
 
 module.exports = Bebopt

    return opt

  _catchInvalidOpt: (opt, list) =>
    if list is 'short' and @_short[opt.arg] is undefined
      console.error("#{@app}: invalid option -- '#{opt.arg}'")
      process.exit(1)
    else if list is 'long' and @_long[opt.arg] is undefined
      console.error("#{@app}: unrecognized option '--#{opt.arg}'")
      process.exit(1)


          list: listName
          child: null
          parent: null
          arg: undefined
        self._options.push(option)
        index = self._options.length - 1
        option = self._options.pop()
