impl'd MonadTrans, working out the details for StateT