we don't actually need an extra thread