diff --git a/com.amd.aparapi/src/java/com/amd/aparapi/MethodModel.java b/com.amd.aparapi/src/java/com/amd/aparapi/MethodModel.java
index e84715fd3bca6ff02ce384416f97d21d90b37790..d5ee20a4e4435a462892e165effe13350ea9bc42 100644
--- a/com.amd.aparapi/src/java/com/amd/aparapi/MethodModel.java
+++ b/com.amd.aparapi/src/java/com/amd/aparapi/MethodModel.java
@@ -1464,16 +1464,16 @@ class MethodModel{
 
          int endPc = 0;
 
-         int variableIndex = 0;
-
          String name = null;
 
          boolean arg;
 
          String descriptor = "";
 
-         Var(StoreSpec _storeSpec, int _slotIndex, int _startPc, boolean _arg, int _variableIndex) {
-            variableIndex = _variableIndex;
+         int slotIndex;
+
+         Var(StoreSpec _storeSpec, int _slotIndex, int _startPc, boolean _arg) {
+            slotIndex = _slotIndex;
             arg = _arg;
             startPc = _startPc;
             if (_storeSpec.equals(StoreSpec.A)) {
@@ -1523,7 +1523,7 @@ class MethodModel{
          }
 
          @Override public int getVariableIndex() {
-            return (variableIndex);
+            return (slotIndex);
          }
       }
 
@@ -1542,7 +1542,7 @@ class MethodModel{
          StoreSpec[] argsAsStoreSpecs = new StoreSpec[args.length + thisOffset];
          if (thisOffset == 1) {
             argsAsStoreSpecs[0] = StoreSpec.O;
-            vars[0] = new Var(argsAsStoreSpecs[0], 0, 0, true, list.size());
+            vars[0] = new Var(argsAsStoreSpecs[0], 0, 0, true);
             list.add(vars[0]);
 
          }
@@ -1552,7 +1552,7 @@ class MethodModel{
             } else {
                argsAsStoreSpecs[i + thisOffset] = StoreSpec.valueOf(args[i].substring(0, 1));
             }
-            vars[i + thisOffset] = new Var(argsAsStoreSpecs[i + thisOffset], i + thisOffset, 0, true, list.size());
+            vars[i + thisOffset] = new Var(argsAsStoreSpecs[i + thisOffset], i + thisOffset, 0, true);
             list.add(vars[i + thisOffset]);
          }
          for (int i = args.length + thisOffset; i < numberOfSlots + thisOffset; i++) {
@@ -1565,44 +1565,31 @@ class MethodModel{
             pc = entry.getKey();
             instruction = entry.getValue();
             StoreSpec storeSpec = instruction.getByteCode().getStore();
-
             if (storeSpec != StoreSpec.NONE) {
                int slotIndex = ((InstructionSet.LocalVariableTableIndexAccessor) instruction).getLocalVariableTableIndex();
                Var prevVar = vars[slotIndex];
-               Var var = new Var(storeSpec, slotIndex, pc + instruction.getLength(), false, list.size()); // will get collected 
+               Var var = new Var(storeSpec, slotIndex, pc + instruction.getLength(), false); // will get collected pretty soon if this is not the same as the previous in this slot
                if (!prevVar.equals(var)) {
                   prevVar.endPc = pc;
                   vars[slotIndex] = var;
                   list.add(vars[slotIndex]);
                }
-
             }
-
          }
          for (int i = 0; i < numberOfSlots + thisOffset; i++) {
             vars[i].endPc = pc + instruction.getLength();
          }
-
          Collections.sort(list, new Comparator<LocalVariableInfo>(){
-
             @Override public int compare(LocalVariableInfo o1, LocalVariableInfo o2) {
-
                return o1.getStart() - o2.getStart();
             }
          });
-
-         int i = 0;
-         for (LocalVariableInfo lvi : list) {
-            Var var = (Var) lvi;
-
-            var.variableIndex = i++;
-         }
          if (Config.enableShowFakeLocalVariableTable) {
             System.out.println("FakeLocalVariableTable:");
             System.out.println(" Start  Length  Slot    Name   Signature");
             for (LocalVariableInfo lvi : list) {
                Var var = (Var) lvi;
-               System.out.println(String.format(" %5d   %5d  %4d  %8s     %s", var.startPc, var.getLength(), var.variableIndex,
+               System.out.println(String.format(" %5d   %5d  %4d  %8s     %s", var.startPc, var.getLength(), var.slotIndex,
                      var.name, var.descriptor));
             }
          }
@@ -1613,15 +1600,14 @@ class MethodModel{
          LocalVariableInfo returnValue = null;
          //  System.out.println("pc = " + _pc + " index = " + _index);
          for (LocalVariableInfo localVariableInfo : list) {
-            //  System.out.println("   start=" + localVariableInfo.getStart() + " length=" + localVariableInfo.getLength()
-            //   + " varidx=" + localVariableInfo.getVariableIndex());
+            // System.out.println("   start=" + localVariableInfo.getStart() + " length=" + localVariableInfo.getLength()
+            // + " varidx=" + localVariableInfo.getVariableIndex());
             if (_pc >= localVariableInfo.getStart() - 1 && _pc <= (localVariableInfo.getStart() + localVariableInfo.getLength())
                   && _index == localVariableInfo.getVariableIndex()) {
                returnValue = localVariableInfo;
                break;
             }
          }
-         // System.out.println("returning " + returnValue);
          return (returnValue);
       }