diff --git a/baksmali/src/main/java/org/jf/baksmali/Adaptors/Format/InstructionMethodItemFactory.java b/baksmali/src/main/java/org/jf/baksmali/Adaptors/Format/InstructionMethodItemFactory.java
index c38b524..772d731 100644
--- a/baksmali/src/main/java/org/jf/baksmali/Adaptors/Format/InstructionMethodItemFactory.java
+++ b/baksmali/src/main/java/org/jf/baksmali/Adaptors/Format/InstructionMethodItemFactory.java
@@ -38,13 +38,11 @@
     private InstructionMethodItemFactory() {
     }
 
-    public static InstructionMethodItem makeInstructionFormatMethodItem(MethodDefinition methodDefinition,
-                                                                              CodeItem codeItem,
-                                                                              int codeAddress,
-                                                                              Instruction instruction) {
+    public static InstructionMethodItem makeInstructionFormatMethodItem(
+            MethodDefinition methodDefinition, CodeItem codeItem, int codeAddress, Instruction instruction) {
         if (instruction instanceof OffsetInstruction) {
-            return new OffsetInstructionFormatMethodItem(methodDefinition.getLabelCache(), codeItem, codeAddress,
-                    instruction);
+            return new OffsetInstructionFormatMethodItem(methodDefinition.getLabelCache(), codeItem,
+                    codeAddress, (OffsetInstruction)instruction);
         }
 
         switch (instruction.getFormat()) {
@@ -61,7 +59,7 @@
                 return new UnresolvedOdexInstructionMethodItem(codeItem, codeAddress,
                         (UnresolvedOdexInstruction)instruction);
             default:
-                return new InstructionMethodItem(codeItem, codeAddress, instruction);
+                return new InstructionMethodItem<Instruction>(codeItem, codeAddress, instruction);
         }
     }
 }
diff --git a/baksmali/src/main/java/org/jf/baksmali/Adaptors/Format/OffsetInstructionFormatMethodItem.java b/baksmali/src/main/java/org/jf/baksmali/Adaptors/Format/OffsetInstructionFormatMethodItem.java
index d63e43b..d4edf3d 100644
--- a/baksmali/src/main/java/org/jf/baksmali/Adaptors/Format/OffsetInstructionFormatMethodItem.java
+++ b/baksmali/src/main/java/org/jf/baksmali/Adaptors/Format/OffsetInstructionFormatMethodItem.java
@@ -31,19 +31,17 @@
 import org.jf.baksmali.Adaptors.LabelMethodItem;
 import org.jf.baksmali.Adaptors.MethodDefinition;
 import org.jf.util.IndentingWriter;
-import org.jf.dexlib.Code.Instruction;
 import org.jf.dexlib.Code.OffsetInstruction;
 import org.jf.dexlib.Code.Opcode;
 import org.jf.dexlib.CodeItem;
 
 import java.io.IOException;
 
-public class OffsetInstructionFormatMethodItem<T extends Instruction & OffsetInstruction>
-        extends InstructionMethodItem<T> {
+public class OffsetInstructionFormatMethodItem extends InstructionMethodItem<OffsetInstruction> {
     protected LabelMethodItem label;
 
     public OffsetInstructionFormatMethodItem(MethodDefinition.LabelCache labelCache, CodeItem codeItem, int codeAddress,
-                                             T instruction) {
+                                             OffsetInstruction instruction) {
         super(codeItem, codeAddress, instruction);
 
         label = new LabelMethodItem(codeAddress + instruction.getTargetAddressOffset(), getLabelPrefix());
diff --git a/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction10t.java b/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction10t.java
index 9947a10..4b7f872 100644
--- a/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction10t.java
+++ b/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction10t.java
@@ -34,7 +34,7 @@
 import org.jf.dexlib.DexFile;
 import org.jf.dexlib.Util.AnnotatedOutput;
 
-public class Instruction10t extends Instruction implements OffsetInstruction {
+public class Instruction10t extends OffsetInstruction {
     public static final InstructionFactory Factory = new Factory();
     private int targetAddressOffset;
 
diff --git a/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction20t.java b/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction20t.java
index a92e1a8..f970cfb 100644
--- a/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction20t.java
+++ b/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction20t.java
@@ -35,7 +35,7 @@
 import org.jf.dexlib.Util.AnnotatedOutput;
 import org.jf.dexlib.Util.NumberUtils;
 
-public class Instruction20t extends Instruction implements OffsetInstruction {
+public class Instruction20t extends OffsetInstruction {
     public static final InstructionFactory Factory = new Factory();
     private int targetAddressOffset;
 
diff --git a/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction21t.java b/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction21t.java
index 4a839d5..f1cd7d2 100644
--- a/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction21t.java
+++ b/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction21t.java
@@ -36,7 +36,7 @@
 import org.jf.dexlib.Util.AnnotatedOutput;
 import org.jf.dexlib.Util.NumberUtils;
 
-public class Instruction21t extends Instruction implements OffsetInstruction, SingleRegisterInstruction {
+public class Instruction21t extends OffsetInstruction implements SingleRegisterInstruction {
     public static final Instruction.InstructionFactory Factory = new Factory();
     private byte regA;
     private short targetAddressOffset;
diff --git a/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction22t.java b/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction22t.java
index d5b3a73..56b8298 100644
--- a/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction22t.java
+++ b/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction22t.java
@@ -36,7 +36,7 @@
 import org.jf.dexlib.Util.AnnotatedOutput;
 import org.jf.dexlib.Util.NumberUtils;
 
-public class Instruction22t extends Instruction implements OffsetInstruction, TwoRegisterInstruction {
+public class Instruction22t extends OffsetInstruction implements TwoRegisterInstruction {
     public static final Instruction.InstructionFactory Factory = new Factory();
     private byte regA;
     private byte regB;
diff --git a/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction30t.java b/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction30t.java
index 7a97903..fc83b22 100644
--- a/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction30t.java
+++ b/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction30t.java
@@ -35,7 +35,7 @@
 import org.jf.dexlib.Util.AnnotatedOutput;
 import org.jf.dexlib.Util.NumberUtils;
 
-public class Instruction30t extends Instruction implements OffsetInstruction {
+public class Instruction30t extends OffsetInstruction {
     public static final InstructionFactory Factory = new Factory();
     private int targetAddressOffset;
 
diff --git a/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction31t.java b/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction31t.java
index 52d6ce6..55bcc6b 100644
--- a/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction31t.java
+++ b/dexlib/src/main/java/org/jf/dexlib/Code/Format/Instruction31t.java
@@ -36,7 +36,7 @@
 import org.jf.dexlib.Util.AnnotatedOutput;
 import org.jf.dexlib.Util.NumberUtils;
 
-public class Instruction31t extends Instruction implements OffsetInstruction, SingleRegisterInstruction {
+public class Instruction31t extends OffsetInstruction implements SingleRegisterInstruction {
     public static final Instruction.InstructionFactory Factory = new Factory();
     private byte regA;
     private int targetAddressOffset;
diff --git a/dexlib/src/main/java/org/jf/dexlib/Code/OffsetInstruction.java b/dexlib/src/main/java/org/jf/dexlib/Code/OffsetInstruction.java
index 7ab366a..d0589c7 100644
--- a/dexlib/src/main/java/org/jf/dexlib/Code/OffsetInstruction.java
+++ b/dexlib/src/main/java/org/jf/dexlib/Code/OffsetInstruction.java
@@ -28,7 +28,11 @@
 
 package org.jf.dexlib.Code;
 
-public interface OffsetInstruction {
-    public int getTargetAddressOffset();
-    public void updateTargetAddressOffset(int targetAddressOffset);
+public abstract class OffsetInstruction extends Instruction {
+    protected OffsetInstruction(Opcode opcode) {
+        super(opcode);
+    }
+
+    public abstract int getTargetAddressOffset();
+    public abstract void updateTargetAddressOffset(int targetAddressOffset);
 }
