def arg(*args, **kwargs):
    def decorate(func):
        func.__cmd_name__ = kwargs.pop(
            'cmd_name', getattr(func, '__cmd_name__', func.__name__))
        func.__cls__ = utils.check_class()
        if not hasattr(func, '__arguments__'):
            func.__arguments__ = utils.get_functarguments(func)
        if len(args) or len(kwargs):
            arg_name = kwargs.get(
                'dest', args[-1].lstrip('-').replace('-', '_'))
            try:
                idx = func.__named__.index(arg_name)
                del func.__named__[idx]
                del func.__arguments__[idx]
            except ValueError:
                pass
            func.__arguments__.append((args, kwargs,))
        if func.__cls__ is None and isinstance(func, types.FunctionType):
            ap_ = ArgParseInator(skip_init=True)
            if func.__cmd_name__ not in ap_.commands:
                ap_.commands[func.__cmd_name__] = func
        return func
    return decorate