extracted abstract class Interpreter