Initial source
The code is in a very early stage so it will change a lot