Commands Refactor Part 1

We split #196 in two parts. this is the first. it only has the `commands/` directory.