running in subprocess to avoid timeouts