changed operand encodings to objects
turned all the instructions into traits