diff --git a/src/com/android/musicvis/GenericWaveRS.java b/src/com/android/musicvis/GenericWaveRS.java
index 6e5d8ef..e8a54a3 100644
--- a/src/com/android/musicvis/GenericWaveRS.java
+++ b/src/com/android/musicvis/GenericWaveRS.java
@@ -59,10 +59,6 @@
     // so 8 floats per line.
     protected float [] mPointData = new float[1024*8];
 
-    private Allocation mLineIdxAlloc;
-    // 2 initial, plus one for each triangle, 2 triangles per sample
-    private short [] mIndexData = new short[2+1024*2];
-
     private ProgramVertex mPVBackground;
     private ProgramVertexFixedFunction.Constants mPVAlloc;
 
@@ -138,12 +134,8 @@
         // Start creating the mesh
         final Mesh.AllocationBuilder meshBuilder = new Mesh.AllocationBuilder(mRS);
         meshBuilder.addVertexAllocation(mVertexBuffer.getAllocation());
-        // Create the Allocation for the indices
-        mLineIdxAlloc = Allocation.createSized(mRS, Element.U16(mRS), mIndexData.length,
-                                               Allocation.USAGE_GRAPHICS_VERTEX |
-                                               Allocation.USAGE_SCRIPT);
         // This will be a triangle strip mesh
-        meshBuilder.addIndexSetAllocation(mLineIdxAlloc, Primitive.TRIANGLE_STRIP);
+        meshBuilder.addIndexSetType(Primitive.TRIANGLE_STRIP);
 
         // Create the Allocation for the vertices
         mCubeMesh = meshBuilder.create();
@@ -154,16 +146,8 @@
         mScript.set_gPointBuffer(mPointAlloc);
         mScript.set_gCubeMesh(mCubeMesh);
 
-        //  put the vertex and index data in their respective buffers
-        updateWave();
-        for(int i = 0; i < mIndexData.length; i ++) {
-            mIndexData[i] = (short) i;
-        }
-
-        //  upload the vertex and index data
+        //  upload the vertex data
         mPointAlloc.copyFromUnchecked(mPointData);
-        mLineIdxAlloc.copyFrom(mIndexData);
-        mLineIdxAlloc.syncAll(Allocation.USAGE_SCRIPT);
 
         // load the texture
         mTexture = Allocation.createFromBitmapResource(mRS, mResources, mTexId);
diff --git a/src/com/android/musicvis/waveform.rs b/src/com/android/musicvis/waveform.rs
index 1c5116d..b25f4cc 100644
--- a/src/com/android/musicvis/waveform.rs
+++ b/src/com/android/musicvis/waveform.rs
@@ -61,7 +61,6 @@
     float amp2 = sin(0.023f * wave2amp) * 80;
     float amp3 = sin(0.011f * wave3amp) * 40;
     float amp4 = sin(0.031f * wave4amp) * 20;
-    // calculate how many invisible lines there are on each side
     for (int i = 0; i < 1024; i++) {
         float val = fabs(sin(0.013f * (wave1pos + i)) * amp1
                   + sin(0.029f * (wave2pos + i)) * amp2);
