Newbie - banging my head against a wall!

So - am writing a custom driver for an multi-zone Xantech amp (I used some monoprice code from Jorge Martinez as a base). The amp does not play media. The basic system is working. I create 8 children (one for each zone). I have a switch, for power, an AudioVolume for volume.
When I perform actions from the device page, everything is great.
I'm trying to now create a dashboard.

First prize would be a single tile that let me control power, volume, input source and mute for a zone. I can't get it to work. (a) The media player shows a next and previous track button that are redundant. (b) Can't seem to select an input source (c) power state isn't reflected.

Second prize is separate tiles for power, mute, inputSelect and volume. But I can't get that to work either. I can't figure out how to wire a tile to the mute function.

I'm sure this is my ignorance at work. Any help greatly appreciated.
The current (and now super messy code) is here:

The two relevant files are:
Child-MonoPrice-6-Zone-Amp-Controller.groovy
Parent-MonoPrice-6-Zone-Amp-Controller.groovy

Ugh.

p.s. As a related question how do you implement two capabilities that expect def on() and def off(). Like switch and bulb. I'd really like bulb to direct to bulbOn() and bulbOff() but try as I might, can't figure it out!

you would need to add a child device for the second on() off() commands, or create custom commands for on and off that accept some parameter, on(1), on(2) or something along those lines.