Finished up shell (part 1). Manually tested, and it seemed to work.