Index: trunk/nv/gfx/animation.hh
===================================================================
--- trunk/nv/gfx/animation.hh	(revision 413)
+++ trunk/nv/gfx/animation.hh	(revision 414)
@@ -29,5 +29,8 @@
 			NV_ASSERT( channel, "nullptr passed to add_channel!" );
 			m_channels.push_back( channel );
-			m_final_key.append( channel->descriptor() );
+			for ( const auto& cslot : channel->descriptor() )
+				if ( cslot.vslot != slot::TIME )
+					m_final_key.push_slot( cslot.etype, cslot.vslot );
+			//m_final_key.append( channel->descriptor() );
 		}
 
Index: trunk/nv/interface/data_descriptor.hh
===================================================================
--- trunk/nv/interface/data_descriptor.hh	(revision 413)
+++ trunk/nv/interface/data_descriptor.hh	(revision 414)
@@ -272,4 +272,13 @@
 		}
 
+		void push_slot( datatype etype, slot vslot )
+		{
+			m_slots[m_count].etype  = etype;
+			m_slots[m_count].offset = m_size;
+			m_slots[m_count].vslot  = vslot;
+			m_size += get_datatype_info( etype ).size;
+			m_count++;
+		}
+
 		void append( const data_descriptor& desc )
 		{
