Developpers (sorry the code isn't well commented, I'm working on it)

What you need : Compile and test