algorithm explained