docs: def _execute(self, func, command, **new_attributes):
          """
          Execute command.
          """
          if self._cfg_factory:
              # if we have a cfg_factory
              try:
                  # we try to load a config with the factory
                  if self.cfg_file:
                      self.cfg = self._cfg_factory(self.cfg_file)
              except Exception as error:
                  # raise se exception
                  self._cfg_error(error)
          # let's get command(function) argspec
          arg_specs = inspect.getargspec(command)
          if arg_specs.defaults:
              # if we have defaults
              # count defaults arguments
              count = len(arg_specs.defaults)
              # get arguments names
              args_names = arg_specs.args[:count]
              # get keyword arguments names
              kwargs_name = arg_specs.args[count:]
          else:
              # else all names are the args only
              args_names = arg_specs.args
              # and keyword arguments is empty
              kwargs_name = []
          pargs = []
          kwargs = {}
          # for every argument in argument names
          for name in args_names:
              if name == 'args':
                  # if argument name is *special name* **args**
                  # we append a reference to self.args
                  pargs.append(self.args)
              elif name == 'self':
                  # else if argment name is *special name* **self**
                  if ArgParseInated in inspect.getmro(func.__cls__):
                      # if the class that holds the function is subclass of
                      # ArgParseInated we'll instantiate it, passing some
                      # parameter
                      pargs.append(func.__cls__(self, **new_attributes))
                  else:
                      # else we'll instatiate the class without parameters
                      pargs.append(func.__cls__())
              else:
                  # else we'll append the argument getting it from the self.args
                  pargs.append(getattr(self.args, name))
          # for every argument in keyword arguments
          for name in kwargs_name:
              if name == 'args':
                  # if argument name is *special name* **args**
                  # we set for the arg a reference to self.args
                  kwargs[name] = self.args
              elif name in self.args:
                  # else if name is in self.args we'll set the relative value.
                  kwargs[name] = getattr(self.args, name)
          # set the **global** write function
          setattr(__builtin__, self._write_name, self.write)
          # set the **global** write line function
          setattr(__builtin__, self._write_line_name, self.writeln)
          # let's setup something.
          for setup_func in self.setup:
              setup_func(self)
          # call event before_execute
          self._self_event('before_execute', command, *pargs, **kwargs)
          # if events returns a non None value we use it as retrval.
          retval, pargs, kwargs = self._call_event(
              'before_execute', command, pargs, kwargs)
          # if before_execute event returns None go on with command
          if retval is None:
              # let's execute the command and assign the returned value to retval
              retval = command(*pargs, **kwargs)
              # call event after_execute
              self._call_event('after_execute', command, pargs, kwargs)
              self._self_event('after_execute', command, *pargs, **kwargs)
          if self.auto_exit:
              # if we have auto_exit is True
              if retval is None:
                  self._self_event(
                      'before_exit_ok', command, retval=EXIT_OK, *pargs, **kwargs)
                  # if retval is None we'll assume it's EXIT_OK
                  self.exit(EXIT_OK)
              elif isinstance(retval, basestring):
                  self._self_event('before_exit_ok', command, retval=retval, *pargs, **kwargs)
                  # else if retval is a string we will exit with the message and
                  # ERRORCODE is equal to 0
                  self.exit(EXIT_OK, retval)
              elif isinstance(retval, int):
                  if retval == EXIT_OK:
                      self._self_event('before_exit_ok', command, retval=retval, *pargs, **kwargs)
                  else:
                      self._self_event('before_exit_error', command, retval=retval, *pargs, **kwargs)
                  # else if retval is an integer we'll exits with it as ERRORCODE
                  self.exit(retval)
              elif isinstance(retval, (tuple, list,)):
                  self._self_event('before_exit_error', command, retval=retval, *pargs, **kwargs)
                  # if retval is a tuple or a list we'll exist with ERRORCODE and
                  # message
                  self.exit(retval[0], retval[1])
              self._self_event('before_exit', command, retval=retval, *pargs, **kwargs)
              self.exit()
          else:
              # else if auto_exit is not True
              # we'll simply return  retval
              return retval