I like to compartmentalize things too. Part of that is reducing the dependencies between things. Some alternatives to consider (passing the root is a good start).
1. pass the actual array to manipulate. (removes requirement that the array be named something particular)

2. have the root implement an interface with methods to call, have a setWhatever method in the child that takes an instance of that interface. (provides compile-time checking for method existance)

3. throw an event with relevant data instead of pushing something into an array. Let the root listen for that event and handle it however it wants. (decouples parent and child entirely. Same child can go anywhere without loss of functionality).