Command Interface

This isn't ready for merge yet, PRing for code review/comments.
since `"enc"` is used all over the place, can we make a `const Enc = "enc"` to have the compiler fix typos?