explain a bit more on each step.