Overall Design

before you start coding, develop an overall design for your shell

this can be a sketch of building blocks, some pseudocode, or a more formal design document such as a UML diagram or specification

the components identified above are probably a good starting point