improved ShellExec