An issue is that the newtype for IO needs to be in Jhc.Prim, Jhc.Prim is included as a dependency for every module because it has things that the compiler needs to exist no matter what you are building. This doesn't mean that Jhc.IO has to export it non-abstractly, and allowing it to be fully abstract is useful, but we need to move the actual newtype back into Jhc.Prim. Just because an IO in Jhc.Prim exists, it doesn't mean you can't provide an alternate IO via a package of course. You might be interested in Jhc.JumpPoint, which was the original implementation of IO exceptions. now, we actually have Grin primitives for continuations, though they arn't currently used, they may be useful for what you are doing. See 'MkCont' in Grin.Grin. John -- John Meacham - ⑆repetae.net⑆john⑈ - http://notanumber.net/