diff --git a/src/tarantool.rs b/src/tarantool.rs
index 4dc880f785a1f4c207773f8d254a7bd039b7ff67..2ab935796b365d0b3ae6af1c2ed4d60ce477eba5 100644
--- a/src/tarantool.rs
+++ b/src/tarantool.rs
@@ -173,17 +173,25 @@ where
     cfg.into_get(field).ok()
 }
 
+#[inline]
 pub fn set_cfg_field<T>(field: &str, value: T) -> Result<(), tlua::LuaError>
 where
     T: tlua::PushOneInto<tlua::LuaState>,
     tlua::Void: From<T::Err>,
+{
+    set_cfg_fields(((field, value),))
+}
+
+pub fn set_cfg_fields<T>(table: T) -> Result<(), tlua::LuaError>
+where
+    tlua::AsTable<T>: tlua::PushInto<tlua::LuaState>,
 {
     use tlua::{Call, CallError};
 
     let l = lua_state();
     let b: LuaTable<_> = l.get("box").expect("can't fail under tarantool");
     let cfg: tlua::Callable<_> = b.get("cfg").expect("can't fail under tarantool");
-    cfg.call_with([(field, value)]).map_err(|e| match e {
+    cfg.call_with(tlua::AsTable(table)).map_err(|e| match e {
         CallError::PushError(_) => unreachable!("cannot fail during push"),
         CallError::LuaError(e) => e,
     })