Architecture problem

I knew this issue was coming but couldn't see it clearly until I had got a way into this project. The attached diagram I hope illustrates the problem that is coming. Up to now I have managed to maintain a tree like structure so only had to pass references down one level. Now I have two major parts of the system to implement in the salmon colour. I need to connect the ring buffer between the UDP Reader and FFI Interface but the GUI level needs a channel to the FFI Interface. I don't know how to resolve that conflict.
The GUI also needs to call functions in the Cmd/Control out module.
This isn't the whole system. Its just enough to get something working. There are similar issues down the road.
I have a feeling that it might only be possible if I flatten everything out and have main create the lot and then lots of Arc's to pass shared stuff down