For #4 your 'break down' code is much easier than your concise reducer code. It has good comments, good variable names, etc. It's much easier to read. We aren't charged by lines of code, and the less complex code is the less chance of introducing bugs.
Private variable naming also costs nothing and may prevent bugs.