Index: trunk/tests/md2_test/md2_test.cc
===================================================================
--- trunk/tests/md2_test/md2_test.cc	(revision 223)
+++ trunk/tests/md2_test/md2_test.cc	(revision 224)
@@ -36,12 +36,8 @@
 			loader = new nv::md2_loader();
 			loader->load( *mesh_file );
+			m_mesh_data = loader->release_mesh_data();
 			delete mesh_file;
-		}
-
-		{
-			NV_PROFILE("create_mesh_data");
-			m_mesh_data = new nv::keyframed_mesh_data( loader );
-		}
-		delete loader;
+			delete loader;
+		}
 
 		{
@@ -84,5 +80,5 @@
 
 private:
-	nv::keyframed_mesh_data* m_mesh_data;
+	nv::mesh_data*           m_mesh_data;
 	nv::keyframed_mesh_gpu*  m_mesh;
 };
Index: trunk/tests/objload_test/objload_test.cc
===================================================================
--- trunk/tests/objload_test/objload_test.cc	(revision 223)
+++ trunk/tests/objload_test/objload_test.cc	(revision 224)
@@ -32,5 +32,5 @@
 	nv::vertex_array* m_va;
 	nv::program*      m_program;
-	nv::mesh*         m_mesh;
+	nv::mesh_data*    m_mesh;
 	nv::uint32        m_count;
 };
@@ -66,5 +66,5 @@
 	nv::mesh_loader* loader = new nv::obj_loader();
 	loader->load( *mesh_file );
-	m_mesh = loader->release_mesh();
+	m_mesh = loader->release_mesh_data();
 	m_count = loader->get_size();
 	delete mesh_file;
@@ -72,5 +72,13 @@
 
 	m_program = m_device->create_program( nv::slurp( "obj.vert" ), nv::slurp( "obj.frag" ) );
-	m_va      = m_device->create_vertex_array( m_mesh, &m_program->get_attributes(), nv::STATIC_DRAW );
+
+	nv::vertex_buffer* vb = nullptr;
+	m_va = m_device->create_vertex_array();
+	vb = m_device->create_vertex_buffer( nv::STATIC_DRAW, m_mesh->get_vertex_count() * sizeof( nv::vec3 ), m_mesh->get_positions().data() );
+	m_va->add_vertex_buffer( nv::slot::POSITION, vb, nv::FLOAT, 3 );
+	vb = m_device->create_vertex_buffer( nv::STATIC_DRAW, m_mesh->get_vertex_count() * sizeof( nv::vec3 ), m_mesh->get_normals().data() );
+	m_va->add_vertex_buffer( nv::slot::NORMAL, vb, nv::FLOAT, 3 );
+	vb = m_device->create_vertex_buffer( nv::STATIC_DRAW, m_mesh->get_vertex_count() * sizeof( nv::vec2 ), m_mesh->get_texcoords().data() );
+	m_va->add_vertex_buffer( nv::slot::TEXCOORD, vb, nv::FLOAT, 2 );
 	return true;
 }
