my shell implementation