make each step depend on previous