Initial commit
We have used preprocessors to create the different types.
It could be better partitioned, but it seems to work and is thus considered fine.
If one where to optimize this I would probably use M4