diff --git a/Common/LuaBindings.h b/Common/LuaBindings.h
index b625cef9aa8a64c6474bc33b5f7158480abed14a..65d5ca74c1424a6551e099f15dc672fc5f372c7e 100644
--- a/Common/LuaBindings.h
+++ b/Common/LuaBindings.h
@@ -142,13 +142,19 @@ class luaStack<std::vector<type > >{
     size_t size=lua_objlen(L,ia);
     v.resize(size);
     for(size_t i=0;i<size;i++){
-      lua_pushinteger(L,i+1);
-      lua_gettable(L,ia);
+      lua_rawgeti(L, ia, i+1);
       v[i]=luaStack<type>::get(L,-1);
       lua_pop(L,1);
     }
     return v;
   }
+  static void push(lua_State *L, const std::vector<type>& v){
+    lua_createtable(L, v.size(), 0);
+    for(size_t i=0;i<v.size;i++){
+      luaStack<type>::push(L,v[i]);
+      lua_rawseti(L, 2, i+1);
+    }
+  }
   static std::string getName(){
     std::string name="vector of ";
     return name+luaStack<type>::getName();