Small Refactoring
Created Instruction visitor
Replaced casting "switch" blocks with visitor