implement shell and basic commands