Commands Refactor Part 2

We split #196 in two parts. this is the second. (#262 is the first). This builds on all the changes to commands/.
what are `p, i, c, o, s`? when using multiple return and functions wose names do not describethe return value, please use real variable names.