implementation command design pattern