better shell execution method