#13: Command pattern second draft