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/.
oh, is the lib not returning opening files + returning readers? (it may be a good idea to make this explicit here, just wondering)