Code refactor, no behavior change

* Follow the conventions of clojure community:
  - Write documentation for *public* methods
  - The parameters are placed after the documentation