cmd.DoConsole now reads from io.Reader for flexibility