Improved Design

Operator validation is now a distinct function for extensibility.

Improved function names to be more idiomatic and less misleading.

TODO: Refactor code to reduce dependence on state.
Thank you /r/clojure for the generous feedback.