First code with visitor design pattern