An implementation of shell