Hmm. I don't know if dividing the work can be more flexible. The "logic" implemented in collectors is just to parse command results to raw values, nothing more. We can separate commands and parsing work, but you must update the parsing when you change the command : they are closely related.

Or... do you have a pattern in mind ?