Index: trunk/src/lua/lua_glm.cc
===================================================================
--- trunk/src/lua/lua_glm.cc	(revision 74)
+++ trunk/src/lua/lua_glm.cc	(revision 75)
@@ -6,7 +6,5 @@
 
 #include "nv/lua/lua_glm.hh"
-#include "nv/types.hh"
 #include "nv/string.hh"
-#include <new>
 
 static size_t nlua_swizzel_lookup[256];
@@ -224,8 +222,8 @@
 	}
 
-	lua_getglobal( L, nv::get_type_name<T>() );
-	lua_pushvalue( L, -2 );
+	lua_getmetatable( L, 1 );
+	lua_getfield( L, -1, "__base" );
+	lua_pushvalue( L, 2 );
 	lua_rawget( L, -2 );
-
 	return 1;
 }
@@ -306,9 +304,11 @@
 	};
 
-	luaL_newmetatable( L, nv::get_type_name<T>() );
+	luaL_newmetatable( L, nlua_metatable_name<T>() );
 	luaL_setfuncs( L, nlua_vec_m, 0 );
-	lua_pop(L,1);
 	luaL_newlib(L, nlua_vec_f);
-	lua_newtable( L );
+	lua_pushvalue(L, -1);
+	lua_setfield(L, -3, "__base" );
+	lua_replace(L, -2);
+    lua_newtable( L );
 	luaL_setfuncs( L, nlua_vec_fm, 0 );
 	lua_setmetatable( L, -2 );
@@ -336,4 +336,5 @@
 	nlua_swizzel_lookup['3'] = 3;
 	int stack = lua_gettop( L );
+
 	luaL_requiref(L, "ivec2", luaopen_vec<glm::ivec2>, 1);
 	luaL_requiref(L, "ivec3", luaopen_vec<glm::ivec3>, 1);
