Separation of functions through modules: ```clojure (import [read-from-string] "./reader") (import [meta with-meta symbol? symbol keyword? keyword namespace unquote? unquote-splicing? quote? syntax-quote? name gensym pr-str] "./ast") (import [empty? count list? list first second third rest cons conj reverse reduce vec last map filter take concat] "./sequence") (import [odd? dictionary? dictionary merge keys vals contains-vector? map-dictionary string? number? vector? boolean? subs re-find true? false? nil? re-pattern? inc dec str char int = ==] "./runtime") (import [split join upper-case replace] "./string") ``` Export Vars to the module scope ```clojure (def version "0.0.1") (def isMaster (== true (require "cluster"))) (def num-cpus (:length (.cpus (require "os")))) (def filetypes {:litcoffee ".litcoffee .coffee.md" :coffee ".coffee" :wisp ".wisp":json ".json" :cson "cson"}) ``` Special form (. object method arg1 arg2) -> (object.method arg1 arg2) ```clojure (console.log (. (. (require "http") createServer (fn [request response] (. response writeHead 200) (. response end "hello world"))) listen 8000)) ```