command design pattern added