Algorithm description ===================== TODO