add step and some internals exposed