added subroutines, sh() subshell, su() switch user