this doesn't actually need to be a weak ref