added Command Design Pattern for User Input