Hi Timotej, It seems you can merge r and s. This solution seems to rely on features that are very specific to the set of effects you want to model, but I couldn't pinpoint what these are. newtype ST2 r w a = ST2 { unwrapST2 :: ST r a } Li-yao