begin command design pattern