added command pattern, added interactive shell