catch more exceptions
use shell for subprocess