add command design pattern