Index: trunk/src/lua/lua_area.cc
===================================================================
--- trunk/src/lua/lua_area.cc	(revision 448)
+++ trunk/src/lua/lua_area.cc	(revision 449)
@@ -9,6 +9,4 @@
 #include "nv/lua/lua_raw.hh"
 #include "nv/core/random.hh"
-
-const char* nv::lua::detail::AREA_METATABLE = "area";
 
 using nv::lua::detail::is_coord;
@@ -446,5 +444,5 @@
 	};
 
-	luaL_newmetatable( L, nv::lua::detail::AREA_METATABLE );
+	luaL_newmetatable( L, nv::lua::pass_traits< nv::rectangle >::metatable() );
 	nlua_register( L, nlua_area_m, -1 );
 	lua_createtable( L, 0, 0 );
Index: trunk/src/lua/lua_glm.cc
===================================================================
--- trunk/src/lua/lua_glm.cc	(revision 448)
+++ trunk/src/lua/lua_glm.cc	(revision 449)
@@ -339,5 +339,5 @@
 	};
 
-	luaL_newmetatable( L, nv::lua::detail::glm_metatable_name<T>() );
+	luaL_newmetatable( L, nv::lua::pass_traits<T>::metatable() );
 	nlua_register( L, nlua_vec_m, -1 );
 	lua_createtable( L, 0, 0 );
Index: trunk/src/lua/lua_raw.cc
===================================================================
--- trunk/src/lua/lua_raw.cc	(revision 448)
+++ trunk/src/lua/lua_raw.cc	(revision 449)
@@ -24,5 +24,5 @@
 	{
 		nv::string64 buffer;
-		size_t l = nv::uint64_to_buffer( buffer, nv::uint64( lua_touserdata( L, idx ) ) );
+		buffer.append( nv::uint64( lua_touserdata( L, idx ) ) );
 		return buffer;
 	}
@@ -30,5 +30,5 @@
 	{
 		nv::string64 buffer;
-		size_t l = nv::f64_to_buffer( buffer, lua_tonumber( L, idx ) );
+		buffer.append( nv::uint64( lua_touserdata( L, idx ) ) );
 		return buffer;
 	}
Index: trunk/src/lua/lua_values.cc
===================================================================
--- trunk/src/lua/lua_values.cc	(revision 448)
+++ trunk/src/lua/lua_values.cc	(revision 449)
@@ -23,10 +23,10 @@
 }
 
-void* nv::lua::detail::check_userdata( lua_State *L, int index, const char* metatable )
+void* nv::lua::detail::raw_check_userdata( lua_State *L, int index, const char* metatable )
 {
 	return luaL_checkudata( L, index, metatable );
 }
 
-void* nv::lua::detail::allocate_userdata( lua_State *L, size_t size, const char* metatable )
+void* nv::lua::detail::raw_allocate_userdata( lua_State *L, size_t size, const char* metatable )
 {
 	void* result = lua_newuserdata(L, size);
@@ -63,9 +63,4 @@
 {
 	lua_pushboolean( L, v );
-}
-
-void nv::lua::detail::push_cstring ( lua_State *L, const char* s )
-{
-	lua_pushstring( L, s );
 }
 
@@ -105,9 +100,4 @@
 	return lua_toboolean( L, index ) != 0;
 }
-
-// const char* nv::lua::detail::to_cstring ( lua_State *L, int index )
-// {
-// 	return lua_tolstring( L, index, nullptr );
-// }
 
 nv::string_view nv::lua::detail::to_string_view( lua_State *L, int index )
@@ -164,9 +154,4 @@
 }
 
-// const char* nv::lua::detail::to_cstring ( lua_State *L, int index, const char* def )
-// {
-// 	return ( lua_type( L, index ) == LUA_TSTRING ? lua_tostring( L, index ) : def );
-// }
-
 void*       nv::lua::detail::to_pointer ( lua_State *L, int index, void* def )
 {
