Can we hide this from the public API? Package scope this and its implementation then provide a second package scoped constructor that takes an `IO`?