use command design pattern