This work has now been replaced with a finalized version ==> https://pastebin.com/3WvNpu85