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/.
yeah... im all for being safe about type assertions, theyre cheap enough to just check once more, and its not really that much uglier