Index: trunk/src/lua/lua_nova.cc
===================================================================
--- trunk/src/lua/lua_nova.cc	(revision 305)
+++ trunk/src/lua/lua_nova.cc	(revision 316)
@@ -680,5 +680,5 @@
 	lua_rawget( L, -2 );
 
-	if ( !lua_isnil( L, -1 ) ) luaL_error( L, "lua.nova - storage \"%s\" already registered!", lua_tolstring( L, lua_upvalueindex(1), 0 ) );
+	if ( !lua_isnil( L, -1 ) ) luaL_error( L, "lua.nova - storage \"%s\" already registered!", lua_tolstring( L, 1, 0 ) );
 
 	lua_newtable( L ); // g t
@@ -805,2 +805,15 @@
 	lua_settop( L, stack );
 }
+
+void nv::lua::register_storage( state* a_state, const string& name, const string& constructor_name )
+{
+	// TODO: error checking
+	lua_State* L = a_state->get_raw();
+	int stack = lua_gettop( L );
+	// TODO: check if nova is loaded
+	lua_pushcfunction( L, nova_register_storage );
+	lua_pushstring( L, name.c_str() );
+	lua_call( L, 1, 1 );
+	lua_setglobal( L, constructor_name.c_str() );
+	lua_settop( L, stack );
+}
