Changed Instruction from an interface to an abstract class; this vastly reduces the duplicate code between instruction implementations, as they have much code in common, and allows for code reuse.