rewrite MonadTransControl instance with dodgy use of unsafeCoerce