move ShellReader into a new file, shell.go