add interpreter design pattern