add middleware and touch up waterfall