add optional timeout support via CLI