Reorganize implementations. Start adding clojurescript implementation.