redundant and ugly code, but proofe of concept, every change work like it should - basicly