Interpreter design pattern