introduction of command pattern, improved user selection