this is really ugly, but I didn't commit the changes gradually... so here it's goes everything in one single commit :(