Index: trunk/nv/formats/md2_loader.hh
===================================================================
--- trunk/nv/formats/md2_loader.hh	(revision 235)
+++ trunk/nv/formats/md2_loader.hh	(revision 236)
@@ -29,6 +29,6 @@
 		virtual bool load( stream& source );
 		virtual size_t get_size() { return m_size; }
-		virtual mesh_data* release_mesh_data();
-		virtual mesh_data* get_frame( sint32 frame );
+		virtual mesh_data_old* release_mesh_data();
+		virtual mesh_data_old* get_frame( sint32 frame );
 
 //		virtual mesh* release_mesh();
Index: trunk/nv/formats/md3_loader.hh
===================================================================
--- trunk/nv/formats/md3_loader.hh	(revision 235)
+++ trunk/nv/formats/md3_loader.hh	(revision 236)
@@ -37,6 +37,6 @@
 		virtual bool load( stream& source );
 		virtual size_t get_size() { return m_size; }
-		virtual mesh_data* release_mesh_data();
-		virtual mesh_data* get_frame( sint32 frame );
+		virtual mesh_data_old* release_mesh_data();
+		virtual mesh_data_old* get_frame( sint32 frame );
 
 		virtual const md3_tag* get_tag( const std::string& name ) const;
Index: trunk/nv/formats/md5_loader.hh
===================================================================
--- trunk/nv/formats/md5_loader.hh	(revision 235)
+++ trunk/nv/formats/md5_loader.hh	(revision 236)
@@ -145,6 +145,6 @@
 		virtual bool load( stream& source );
 		virtual size_t get_size();
-		virtual mesh_data* release_mesh_data() { return release_submesh_data(0); }
-		virtual mesh_data* release_submesh_data( uint32 mesh_id );
+		virtual mesh_data_old* release_mesh_data() { return release_submesh_data(0); }
+		virtual mesh_data_old* release_submesh_data( uint32 mesh_id );
 //		virtual mesh* get_frame( sint32 /*frame*/ ) { return nullptr; }
 		bool check_animation( const md5_animation& animation ) const;
Index: trunk/nv/formats/obj_loader.hh
===================================================================
--- trunk/nv/formats/obj_loader.hh	(revision 235)
+++ trunk/nv/formats/obj_loader.hh	(revision 236)
@@ -27,9 +27,9 @@
 		virtual bool load( stream& source );
 		virtual size_t get_size() { return m_size; }
-		virtual mesh_data* release_mesh_data() { mesh_data* m = m_mesh; m_mesh = nullptr; return m; }
+		virtual mesh_data_old* release_mesh_data() { mesh_data_old* m = m_mesh; m_mesh = nullptr; return m; }
 	private:
-		mesh_data*  m_mesh;
-		bool        m_tangents;
-		std::size_t m_size;
+		mesh_data_old*  m_mesh;
+		bool            m_tangents;
+		std::size_t     m_size;
 	};
 
Index: trunk/nv/gfx/keyframed_mesh.hh
===================================================================
--- trunk/nv/gfx/keyframed_mesh.hh	(revision 235)
+++ trunk/nv/gfx/keyframed_mesh.hh	(revision 236)
@@ -37,5 +37,5 @@
 	{
 	public:
-		keyframed_mesh( context* a_context, mesh_data* a_data );
+		keyframed_mesh( context* a_context, mesh_data_old* a_data );
 		virtual size_t get_index_count() const { return m_data->get_index_count(); }
 		virtual void run_animation( animation_entry* a_anim );
@@ -48,5 +48,5 @@
 		virtual ~keyframed_mesh();
 	protected:
-		mesh_data*    m_data;
+		mesh_data_old* m_data;
 
 		uint32 m_start_frame;
@@ -65,5 +65,5 @@
 	{
 	public:
-		keyframed_mesh_gpu( context* a_context, mesh_data* a_data, program* a_program );
+		keyframed_mesh_gpu( context* a_context, mesh_data_old* a_data, program* a_program );
 		void update( uint32 ms );
 	private:
@@ -78,5 +78,5 @@
 	{
 	public:
-		keyframed_mesh_cpu( context* a_context, mesh_data* a_data );
+		keyframed_mesh_cpu( context* a_context, mesh_data_old* a_data );
 		void update( uint32 ms );
 	private:
Index: trunk/nv/gfx/mesh_data.hh
===================================================================
--- trunk/nv/gfx/mesh_data.hh	(revision 235)
+++ trunk/nv/gfx/mesh_data.hh	(revision 236)
@@ -17,5 +17,5 @@
 namespace nv
 {
-	class mesh_data
+	class mesh_data_old
 	{
 	public:
@@ -24,5 +24,5 @@
 		typedef std::unordered_map< std::string, transforms > tag_map;
 
-		mesh_data() {}
+		mesh_data_old() {}
 
 		const std::vector< vec3 >&   get_positions() const { return m_positions; }
@@ -32,5 +32,5 @@
 		const std::vector< uint32 >& get_indices()   const { return m_indices; }
 
-		const mesh_data::tag_map&    get_tag_map()   const { return m_tags; }
+		const mesh_data_old::tag_map&    get_tag_map()   const { return m_tags; }
 
 		size_t get_frame_count() const  { return m_texcoords.size() == 0 ? 0 : m_positions.size() / m_texcoords.size(); }
@@ -61,5 +61,5 @@
 		mesh_data_creator() 
 		{
-			m_data = new mesh_data;
+			m_data = new mesh_data_old;
 		}
 
@@ -69,5 +69,5 @@
 		const std::vector< vec2 >&   get_texcoords() const { return m_data->m_texcoords; }
 		const std::vector< uint32 >& get_indices()   const { return m_data->m_indices; }
-		const mesh_data::tag_map&    get_tag_map()   const { return m_data->m_tags; }
+		const mesh_data_old::tag_map&    get_tag_map()   const { return m_data->m_tags; }
 
 		std::vector< vec3 >&   get_positions() { return m_data->m_positions; }
@@ -76,9 +76,9 @@
 		std::vector< vec2 >&   get_texcoords() { return m_data->m_texcoords; }
 		std::vector< uint32 >& get_indices()   { return m_data->m_indices; }
-		mesh_data::tag_map&    get_tag_map()   { return m_data->m_tags; }
+		mesh_data_old::tag_map&    get_tag_map()   { return m_data->m_tags; }
 
-		mesh_data* release()
+		mesh_data_old* release()
 		{
-			mesh_data* result = m_data;
+			mesh_data_old* result = m_data;
 			m_data = nullptr;
 			return result;
@@ -90,5 +90,5 @@
 		}
 	private:
-		mesh_data* m_data;
+		mesh_data_old* m_data;
 	};
 
Index: trunk/nv/interface/device.hh
===================================================================
--- trunk/nv/interface/device.hh	(revision 235)
+++ trunk/nv/interface/device.hh	(revision 236)
@@ -38,5 +38,5 @@
 		virtual void delay( uint32 ms ) = 0;
 
-		virtual vertex_array* create_vertex_array( const mesh* m, const attribute_map* am, buffer_hint hint )
+		virtual vertex_array* create_vertex_array( const mesh_pack* m, const attribute_map* am, buffer_hint hint )
 		{
 			vertex_array* result = create_vertex_array();
Index: trunk/nv/interface/mesh.hh
===================================================================
--- trunk/nv/interface/mesh.hh	(revision 235)
+++ trunk/nv/interface/mesh.hh	(revision 236)
@@ -62,10 +62,10 @@
 
 
-	class mesh
+	class mesh_pack
 	{
 	public:
 		typedef std::unordered_map< std::string, vertex_attribute_base* > map;
 
-		mesh( primitive p = TRIANGLES ) 
+		mesh_pack( primitive p = TRIANGLES ) 
 			: m_map(), m_indices(), m_primitive( p ) {}
 		template <typename T>
@@ -115,5 +115,5 @@
 		bool has_indices() const { return m_indices != nullptr; }
 
-		~mesh() 
+		~mesh_pack() 
 		{
 			delete m_indices;
@@ -129,4 +129,6 @@
 	};
 
+
+
 }
 
Index: trunk/nv/interface/mesh_loader.hh
===================================================================
--- trunk/nv/interface/mesh_loader.hh	(revision 235)
+++ trunk/nv/interface/mesh_loader.hh	(revision 236)
@@ -29,5 +29,5 @@
 		virtual bool load( stream& source ) = 0;
 		virtual size_t get_size() = 0;
-		virtual mesh_data* release_mesh_data() = 0;
+		virtual mesh_data_old* release_mesh_data() = 0;
 	};
 
Index: trunk/src/formats/md2_loader.cc
===================================================================
--- trunk/src/formats/md2_loader.cc	(revision 235)
+++ trunk/src/formats/md2_loader.cc	(revision 236)
@@ -241,5 +241,5 @@
 }
 
-mesh_data* nv::md2_loader::release_mesh_data()
+mesh_data_old* nv::md2_loader::release_mesh_data()
 {
 	mesh_data_creator m;
@@ -254,5 +254,5 @@
 }
 
-mesh_data* nv::md2_loader::get_frame( sint32 frame )
+mesh_data_old* nv::md2_loader::get_frame( sint32 frame )
 {
 	mesh_data_creator m;
Index: trunk/src/formats/md3_loader.cc
===================================================================
--- trunk/src/formats/md3_loader.cc	(revision 235)
+++ trunk/src/formats/md3_loader.cc	(revision 236)
@@ -351,5 +351,5 @@
 }
 
-mesh_data* nv::md3_loader::release_mesh_data()
+mesh_data_old* nv::md3_loader::release_mesh_data()
 {
 	mesh_data_creator m;
@@ -371,5 +371,5 @@
 }
 
-mesh_data* nv::md3_loader::get_frame( sint32 frame )
+mesh_data_old* nv::md3_loader::get_frame( sint32 frame )
 {
 	mesh_data_creator m;
Index: trunk/src/formats/md5_loader.cc
===================================================================
--- trunk/src/formats/md5_loader.cc	(revision 235)
+++ trunk/src/formats/md5_loader.cc	(revision 236)
@@ -285,5 +285,5 @@
 }
 
-mesh_data* nv::md5_loader::release_submesh_data( uint32 mesh_id )
+mesh_data_old* nv::md5_loader::release_submesh_data( uint32 mesh_id )
 {
 	mesh_data_creator m;
Index: trunk/src/gfx/keyframed_mesh.cc
===================================================================
--- trunk/src/gfx/keyframed_mesh.cc	(revision 235)
+++ trunk/src/gfx/keyframed_mesh.cc	(revision 236)
@@ -15,5 +15,5 @@
 using namespace nv;
 
-keyframed_mesh::keyframed_mesh( context* a_context, mesh_data* a_data )
+keyframed_mesh::keyframed_mesh( context* a_context, mesh_data_old* a_data )
 	: animated_mesh()
 	, m_data( a_data )
@@ -115,5 +115,5 @@
 }
 
-keyframed_mesh_gpu::keyframed_mesh_gpu( context* a_context, mesh_data* a_data, program* a_program )
+keyframed_mesh_gpu::keyframed_mesh_gpu( context* a_context, mesh_data_old* a_data, program* a_program )
 	: keyframed_mesh( a_context, a_data )
 	, m_loc_next_position( 0 )
@@ -160,5 +160,5 @@
 
 
-nv::keyframed_mesh_cpu::keyframed_mesh_cpu( context* a_context, mesh_data* a_data )
+nv::keyframed_mesh_cpu::keyframed_mesh_cpu( context* a_context, mesh_data_old* a_data )
 	: keyframed_mesh( a_context, a_data )
 {
