Get rid of externs (no advanced compilation, it isn't worth it)
Some more documentation and some refactoring.