Essential algorithms