enhancement: add a timeout for child process