I must have forgotten 2 files in there so here is my full rework of this package

More...