Passing name into ::new just feels weird
Passing io into initializer makes sense