diff --git a/typedflow/nodes/base.py b/typedflow/nodes/base.py
index ece0895..b9853f9 100644
--- a/typedflow/nodes/base.py
+++ b/typedflow/nodes/base.py
@@ -113,7 +113,8 @@ class ConsumerNode:
         None
         """
         assert len(self.precs) == 0, 'Some arguments have been already set'
-        self.precs: Dict[str, ProviderNode] = args
+        for name, prec in args.items():
+            self.set_upstream_node(name, prec)
         return self
 
 

diff --git a/typedflow/tests/flow/test_flow.py b/typedflow/tests/flow/test_flow.py
index aa31917..7682475 100644
--- a/typedflow/tests/flow/test_flow.py
+++ b/typedflow/tests/flow/test_flow.py
@@ -209,3 +209,4 @@ def test_declare_inputs_when_definition_with_multiple_args():
     node_dump = DumpNode(dump)({'a': node_task})
     flow = Flow([node_dump, ])
     flow.typecheck()
+    assert node_task.cache_table.life == 1

The new syntax doesn't work
It doesn't accept args in the correct way. For instance, life of cache tables are never incremented.
typedflow/tests/flow/test_flow.py::test_declare_inputs_when_definition_with_multiple_args
typedflow/tests/flow/test_flow.py::test_flow_run typedflow/tests/flow/test_flow.py::test_typecheck_success typedflow/tests/flow/test_flow.py::test_typecheck_failure typedflow/tests/flow/test_flow.py::test_incoming_multiple_node typedflow/tests/flow/test_flow.py::test_arg_inheritance typedflow/tests/flow/test_flow.py::test_declare_inputs_when_definition