Disclaimer: The code produced here so far is not really usable