Pre gen and gen modes appear to be doing the exact same thing. And defeatured modes are only different in that they are looking at M4 instead of P10. Consider handling monitoring differently. Instead of monitor being aware of mode and acting accordingly, should mode call a signal function in the monitor to configure the monitor appropriately for that mode? With this approach, seems like a lot of these functions could be merged into 1 with a couple "if" conditions checking current monitor configuration. I also think this approach is a better design pattern because monitor does not need to concern itself with higher level details (e.g. current mode) - better to have higher level units (modes, states) telling lower level units (drivers, monitors, controllers) what's appropriate.