simpler implementation
reified Program, operational monad transformer