     @_short = {}
     @_half = {}
     @_parent = null
-    @__rargs = [] # raw args
-    @__pargs = [] # processed args
-    @__uargs = {} # user-ready args
+    @__options = []
+    @_raw = process.argv # XXX for the people; lol, that is this is a protected copy
 
   _beatError: (parent, name) ->
     switch parent

    @_parent = null
    return @

  _gather: () =>
    @__rargs = process.argv
    @__pargs = @__rargs.slice(2).map((opt, ind, arr) =>
      if /^--$/.test(opt)
        len = opt.replace(/^(--?).*/, '$1').length
        parent = null
        switch len
          when 1
            opt = opt.replace(/^-/, '')
            if opt.length < 2 # short
              ref = @_short[opt]
              parent = 'short'
            else
              ref = @_half[opt]
              parent = 'half'
          when 2
            opt = opt.replace(/^--/, '')
            ref = @_long[opt]
            parent = 'long'
        console.log opt
        @_optError(parent, opt)
      else

      return ref)

  _log: (y) ->
    console.log(util.inspect(y, { colors: true, depth: null }))

  parse: () =>
    @_gather()
    @_log(@)
    @_resolveOpts()

module.exports = Bebopt
