Make IORef generation stricter
Add product-style supplying monad transformer