add interpreter design pattern.