better way to unsafely create IORefs: add dummy parameter to defeat let floating
bump upper version bound for base