functionning new algo