Step3: rewrite the Monad part (apart from the Reader monad)
Step3: rewrite the Monad part (apart from the Reader monad)

sjrd/dotty,sjrd/dotty,sjrd/dotty,sjrd/dotty,dotty-staging/dotty,dotty-staging/dotty,dotty-staging/dotty,lampepfl/dotty,som-snytt/dotty,lampepfl/dotty,lampepfl/dotty,som-snytt/dotty,lampepfl/dotty,dotty-staging/dotty,lampepfl/dotty,som-snytt/dotty,som-snytt/dotty,dotty-staging/dotty,som-snytt/dotty,sjrd/dotty