a lot of work and I do not care small commits