diff --git a/src/elcaminoreal/_gather.py b/src/elcaminoreal/_gather.py
index 63f85a9..cbe7637 100644
--- a/src/elcaminoreal/_gather.py
+++ b/src/elcaminoreal/_gather.py
@@ -24,12 +24,13 @@ class Commands(object):
     def command(self,
                 name=None,
                 parser=caparg.command(''),
-                dependencies=pyrsistent.v()):
+                dependencies=pyrsistent.v(),
+                regular=False):
         """
         Register as a command.
 
         """
-        transform = gather.Wrapper.glue((dependencies, parser))
+        transform = gather.Wrapper.glue((dependencies, parser, regular))
         ret = self._command_collector.register(name, transform=transform)
         return ret
 
@@ -47,20 +48,27 @@ class Commands(object):
         parsed = command.parse(args)
         subcommand = ' '.join(parsed['__caparg_subcommand__'])
         func = collection[subcommand].original
-        dependencies, _ignored = collection[subcommand].extra
+        dependencies, _ignored, regular = collection[subcommand].extra
         graph = self.mkgraph(dependencies)
         graph.update(override_dependencies)
-        return func(parsed, graph)
+        if not regular:
+            return func(parsed, graph)
+        args = {dependency: graph[dependency]
+                for dependency in dependencies}
+        args.update(parsed)
+        del args['__caparg_subcommand__']
+        return func(**args)
 
     def dependency(self,
                    name=None,
                    dependencies=pyrsistent.v(),
-                   possible_dependencies=pyrsistent.v()):
+                   possible_dependencies=pyrsistent.v(),
+                   regular=False):
         """
         Register as a dependency.
 
         """
-        glue = (dependencies, possible_dependencies)
+        glue = (dependencies, possible_dependencies, regular)
         transform = gather.Wrapper.glue(glue)
         ret = self._collector.register(name, transform=transform)
         return ret
@@ -83,14 +91,20 @@ class Commands(object):
             on_route = on_route.add(thing)
             plugin = collection[thing]
             func = plugin.original
-            dependencies, possible_dependencies = plugin.extra
+            dependencies, possible_dependencies, regular = plugin.extra
             my_dependencies, my_possible_dependencies = {}, {}
             for other_thing in dependencies:
                 my_dependencies[other_thing] = _build(other_thing, on_route)
             for other_thing in possible_dependencies:
                 builder = functools.partial(_build, other_thing, on_route)
                 my_possible_dependencies[other_thing] = builder
-            ret[thing] = func(my_dependencies, my_possible_dependencies)
+            if regular:
+                args = {'build_' + key: value
+                        for key, value in my_possible_dependencies.items()}
+                args.update(my_dependencies)
+                ret[thing] = func(**args)
+            else:
+                ret[thing] = func(my_dependencies, my_possible_dependencies)
             return ret[thing]
         for thing in things:
             _build(thing)
diff --git a/tox.ini b/tox.ini
index 0ef3c06..297cc23 100644
--- a/tox.ini
+++ b/tox.ini
@@ -30,7 +30,7 @@ commands =
     # E0704 -- bare raise outside except (rare, when it's done I mean it)
     # R0201 -- unused self in methods (methods can be used for polymorphism)
     # R0903 -- too few public methods (attrs-based classes have implicit ones)
-    py27-lint: pylint --disable=unsupported-assignment-operation --disable=no-member --disable=not-callable --disable=unsubscriptable-object --disable=E0704 --disable=R0903 --disable=R0201 src/elcaminoreal
+    py27-lint: pylint --disable=blacklisted-name --disable=unsupported-assignment-operation --disable=no-member --disable=not-callable --disable=unsubscriptable-object --disable=E0704 --disable=R0903 --disable=R0201 src/elcaminoreal
     py27-lint: flake8 src/elcaminoreal
     #{py27,pypy,py36,py35}-func: python -m elcaminoreal.example selftest
     #{py27,pypy,py35}-func: python -m elcaminoreal.example selftest

Allow regular arguments to commands and dependencies
The following should work:

```
@COMMANDS.dependency(
        dependencies=['foo',  'bar'],
        possible_dependencies=['baz'],
        regular=True)
def thing(foo , bar, build_baz):
   val = foo()
    if val > 5:
        val -= build_baz() 
    return val + bar()

@COMMANDS.command(
                  dependencies=['thing'],
                  parser=ca.command('',
                                    ca.positional('lala', type=str)),
                   regular=True)
def do_stuff(thing, lala):
    return str(thing) + lala
```
diff --git a/src/elcaminoreal/test/some_plugins.py b/src/elcaminoreal/test/some_plugins.py
index a885594..9507b74 100644
--- a/src/elcaminoreal/test/some_plugins.py
+++ b/src/elcaminoreal/test/some_plugins.py
@@ -21,6 +21,18 @@ def a_foo(dependencies, _possible_dependencies):
     return dict(bar=dependencies['bar'])
 
 
+@COMMANDS.dependency(dependencies=["bar", "quux"],
+                     possible_dependencies=["foo"],
+                     regular=True)
+def regular(bar, quux, build_foo):
+    """
+    Depend on bar, maybe on foo
+
+    Use regular arguments.
+    """
+    return dict(bar=bar, quux=quux, foo=build_foo())
+
+
 @COMMANDS.dependency(possible_dependencies=["bar"])
 def foo_2(_dependencies, possible_dependencies):
     """
@@ -37,6 +49,14 @@ def a_bar(_dependencies, _possible_dependencies):
     return "I'm a bar"
 
 
+@COMMANDS.dependency(name="quux")
+def a_quux(_dependencies, _possible_dependencies):
+    """
+    Return a quux-like object.
+    """
+    return "I'm a quux"
+
+
 @COMMANDS.dependency()
 def rand(_dependencies, _possible_dependencies):
     """
@@ -83,6 +103,28 @@ def _print(_dependencies, _possible_dependencies):
     return print
 
 
+@COMMANDS.dependency(name='output')
+def dummy_output(_dependencies, _possible_dependencies):
+    """
+    Literally do nothing.
+
+    This is designed for being overridden.
+    """
+
+
+@COMMANDS.command(dependencies=['foo', 'output'],
+                  parser=ca.command('',
+                                    ca.positional('lili', type=str)),
+                  regular=True)
+def regular_command(foo, lili, output):
+    """
+    Use regular arguments
+
+    Output results
+    """
+    output(foo, lili)
+
+
 @COMMANDS.command(dependencies=['foo', 'print'],
                   parser=ca.command('',
                                     ca.positional('lala', type=str)))
diff --git a/src/elcaminoreal/test/test_gathering.py b/src/elcaminoreal/test/test_gathering.py
index 8049cd1..7ec2028 100644
--- a/src/elcaminoreal/test/test_gathering.py
+++ b/src/elcaminoreal/test/test_gathering.py
@@ -46,6 +46,15 @@ class DependencyResolverTester(unittest.TestCase):
         result = some_plugins.COMMANDS.mkgraph(['foo_2'])
         self.assertEquals(result['foo_2'], dict(bar="I'm a bar"))
 
+    def test_mkgraph_regular(self):
+        """
+        mkgraph regular functions work
+        """
+        result = some_plugins.COMMANDS.mkgraph(['regular'])
+        self.assertEquals(result['regular']['bar'], result['bar'])
+        self.assertEquals(result['regular']['quux'], result['quux'])
+        self.assertEquals(result['regular']['foo'], result['foo'])
+
 
 class RunnerResolverTester(unittest.TestCase):
 
@@ -100,3 +109,18 @@ class RunnerResolverTester(unittest.TestCase):
             some_plugins.COMMANDS.run(['no-such-command'])
         error_message = filep.getvalue().splitlines()
         self.assertEquals(error_message.pop(0), 'Usage:')
+
+    def test_regular(self):
+        """
+        Asking for regular arguments calls functions with argument names
+        """
+        output = []
+
+        def _my_output(*args):
+            output.append(args)
+        dependencies = dict(output=_my_output)
+        some_plugins.COMMANDS.run(['regular-command', 'thing'],
+                                  override_dependencies=dependencies)
+        self.assertEquals(len(output), 1)
+        self.assertEquals(output[0][0]['bar'], "I'm a bar")
+        self.assertEquals(output[0][1], 'thing')

pip install -e .[dev]
parse_log_pytest
pytest
pytest pytest-cov pytest-xdist pytest-mock pytest-asyncio
3.9
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==25.3.0
caparg==19.11.0
coverage==7.8.0
-e git+https://github.com/elcaminoreal/elcaminoreal.git@a76600014ed645b6f92b98bf491f2b49e5625d6d#egg=elcaminoreal
exceptiongroup @ file:///croot/exceptiongroup_1706031385326/work
execnet==2.1.1
gather==2023.1.20.1
incremental==24.7.2
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
packaging @ file:///croot/packaging_1734472117206/work
pluggy @ file:///croot/pluggy_1733169602837/work
pyrsistent==0.20.0
pytest @ file:///croot/pytest_1738938843180/work
pytest-asyncio==0.26.0
pytest-cov==6.0.0
pytest-mock==3.14.0
pytest-xdist==3.6.1
six==1.17.0
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
typing_extensions==4.13.0
venusian==3.1.1

name: elcaminoreal
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - exceptiongroup=1.2.0=py39h06a4308_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - packaging=24.2=py39h06a4308_0
  - pip=25.0=py39h06a4308_0
  - pluggy=1.5.0=py39h06a4308_0
  - pytest=8.3.4=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py39h06a4308_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==25.3.0
      - caparg==19.11.0
      - coverage==7.8.0
      - execnet==2.1.1
      - gather==2023.1.20.1
      - incremental==24.7.2
      - pyrsistent==0.20.0
      - pytest-asyncio==0.26.0
      - pytest-cov==6.0.0
      - pytest-mock==3.14.0
      - pytest-xdist==3.6.1
      - six==1.17.0
      - typing-extensions==4.13.0
      - venusian==3.1.1
prefix: /opt/conda/envs/elcaminoreal

src/elcaminoreal/test/test_gathering.py::RunnerResolverTester::test_required
src/elcaminoreal/test/test_gathering.py::DependencyResolverTester::test_mkgraph src/elcaminoreal/test/test_gathering.py::DependencyResolverTester::test_mkgraph_cycle src/elcaminoreal/test/test_gathering.py::DependencyResolverTester::test_mkgraph_possible src/elcaminoreal/test/test_gathering.py::DependencyResolverTester::test_mkgraph_random src/elcaminoreal/test/test_gathering.py::DependencyResolverTester::test_mkgraph_regular src/elcaminoreal/test/test_gathering.py::RunnerResolverTester::test_args src/elcaminoreal/test/test_gathering.py::RunnerResolverTester::test_error_redirect src/elcaminoreal/test/test_gathering.py::RunnerResolverTester::test_regular src/elcaminoreal/test/test_gathering.py::RunnerResolverTester::test_run
src/elcaminoreal/_gather.py tox.ini
src/elcaminoreal/_gather.py tox.ini