reorganized source code to better welcome changes later !