Tried to describe the steps the algorithm takes