A way better organisation of the source code. some typing improvement.