   ([name args]
    {:type  :message
     :value name
-    :slots {:args args}
+    :slots {:args (vec args)}
     :proto initial}))
 
 (defn oi-send [target msg]

    {:type :number :value n} {:env env :result n}
    {:type :string :value s} {:env env :result (str \" s \")}
    {:type :boolean :value b} {:env env :result b}
    {:type :message :value slot-name :slots {:args args}}
    (activate env (lookup-slot env slot-name) args)
    {:type :message :value slot-name}
    (activate env (lookup-slot env slot-name) [])))

(defn eval*
  ([env exprs] (:result (reduce eval {:env env :result nil} exprs)))

(defn oi-number [n]
  {:type  :number
   :value n
   :slots {"<" (fn [param]
                 (println n "<" param)
                 (oi-boolean (< n (:value param))))}
   :proto initial})

(defn oi-string [s]
