The names looks too similar from each other, and there are local variables...
I will try to rewrite it to have a clearer code.