further algorithm development