loadEmpty :: Splices (I.Splice IO)
          -> Splices (I.Splice IO)
          -> Splices (C.Splice IO)
          -> Splices (AttrSplice IO)
          -> IO (HeistState IO)
loadEmpty a b c d = do
    let sc = SpliceConfig (defaultInterpretedSplices `mappend` a)
                          (defaultLoadTimeSplices `mappend` b) c d mempty
    res <- runEitherT $ initHeist $ HeistConfig sc "" False
    either (error . concat) return res
loadEmpty :: Splices (I.Splice IO)
          -> Splices (I.Splice IO)
          -> Splices (C.Splice IO)
          -> Splices (AttrSplice IO)
          -> IO (HeistState IO)
loadEmpty a b c d = do
    let sc = SpliceConfig (defaultInterpretedSplices `mappend` a)
                          (defaultLoadTimeSplices `mappend` b) c d mempty
    res <- runEitherT $ initHeist $ HeistConfig sc "" False
    either (error . concat) return res
loadEmpty a b c d = do
    let sc = SpliceConfig (defaultInterpretedSplices `mappend` a)
                          (defaultLoadTimeSplices `mappend` b) c d mempty
    res <- runEitherT $ initHeist $ HeistConfig sc "" False
    either (error . concat) return res