Command Interface

This isn't ready for merge yet, PRing for code review/comments.
this doesn't seem to need to return `error` anymore