diff --git a/crates/configuration/src/parachain.rs b/crates/configuration/src/parachain.rs
index 4e027e6f1a1e571e37b14bd37ce20cae74af6a85..69e058fa6d293eb1cb4ad275916a99abef813761 100644
--- a/crates/configuration/src/parachain.rs
+++ b/crates/configuration/src/parachain.rs
@@ -496,7 +496,10 @@ impl<C: Context> ParachainConfigBuilder<WithId, C> {
     }
 
     /// Set the default resources limits used for collators. Can be overridden.
-    pub fn with_default_resources(self, f: fn(ResourcesBuilder) -> ResourcesBuilder) -> Self {
+    pub fn with_default_resources(
+        self,
+        f: impl FnOnce(ResourcesBuilder) -> ResourcesBuilder,
+    ) -> Self {
         match f(ResourcesBuilder::new()).build() {
             Ok(default_resources) => Self::transition(
                 ParachainConfig {
@@ -722,7 +725,7 @@ impl<C: Context> ParachainConfigBuilder<WithAtLeastOneCollator, C> {
     /// Add a new collator using a nested [`NodeConfigBuilder`].
     pub fn with_collator(
         self,
-        f: fn(NodeConfigBuilder<node::Initial>) -> NodeConfigBuilder<node::Buildable>,
+        f: impl FnOnce(NodeConfigBuilder<node::Initial>) -> NodeConfigBuilder<node::Buildable>,
     ) -> Self {
         match f(NodeConfigBuilder::new(
             ChainDefaultContext::default(),
diff --git a/crates/configuration/src/relaychain.rs b/crates/configuration/src/relaychain.rs
index 66edf9d362fb75da78682df9a52877c5a542c094..760be05fea542d76dc462b5c3e4cffa8e7686d22 100644
--- a/crates/configuration/src/relaychain.rs
+++ b/crates/configuration/src/relaychain.rs
@@ -250,7 +250,10 @@ impl RelaychainConfigBuilder<WithChain> {
     }
 
     /// Set the default resources limits used for nodes. Can be overridden.
-    pub fn with_default_resources(self, f: fn(ResourcesBuilder) -> ResourcesBuilder) -> Self {
+    pub fn with_default_resources(
+        self,
+        f: impl FnOnce(ResourcesBuilder) -> ResourcesBuilder,
+    ) -> Self {
         match f(ResourcesBuilder::new()).build() {
             Ok(default_resources) => Self::transition(
                 RelaychainConfig {
@@ -349,7 +352,7 @@ impl RelaychainConfigBuilder<WithChain> {
     /// Add a new node using a nested [`NodeConfigBuilder`].
     pub fn with_node(
         self,
-        f: fn(NodeConfigBuilder<node::Initial>) -> NodeConfigBuilder<node::Buildable>,
+        f: impl FnOnce(NodeConfigBuilder<node::Initial>) -> NodeConfigBuilder<node::Buildable>,
     ) -> RelaychainConfigBuilder<WithAtLeastOneNode> {
         match f(NodeConfigBuilder::new(
             self.default_chain_context(),
@@ -384,7 +387,7 @@ impl RelaychainConfigBuilder<WithAtLeastOneNode> {
     /// Add a new node using a nested [`NodeConfigBuilder`].
     pub fn with_node(
         self,
-        f: fn(NodeConfigBuilder<node::Initial>) -> NodeConfigBuilder<node::Buildable>,
+        f: impl FnOnce(NodeConfigBuilder<node::Initial>) -> NodeConfigBuilder<node::Buildable>,
     ) -> Self {
         match f(NodeConfigBuilder::new(
             self.default_chain_context(),
diff --git a/crates/configuration/src/shared/node.rs b/crates/configuration/src/shared/node.rs
index 32851db8c17ebb796dd61059e48961f869edd582..744dea0bcd645ca95c4739122797b87ac8f7e744 100644
--- a/crates/configuration/src/shared/node.rs
+++ b/crates/configuration/src/shared/node.rs
@@ -530,7 +530,7 @@ impl NodeConfigBuilder<Buildable> {
     }
 
     /// Set the resources limits what will be used for the node (only podman/k8s). Override the default.
-    pub fn with_resources(self, f: fn(ResourcesBuilder) -> ResourcesBuilder) -> Self {
+    pub fn with_resources(self, f: impl FnOnce(ResourcesBuilder) -> ResourcesBuilder) -> Self {
         match f(ResourcesBuilder::new()).build() {
             Ok(resources) => Self::transition(
                 NodeConfig {