still quite a big spaghetti…
just referring to your question - looks like you need this kind of pattern: