first step is always the hardest
Algorithms