implementing interactive shell