     {: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 :send :slots {:target target :message {:type :message :value slot-name :slots {:args args}}}}
+    (do
+      (println "send" target slot-name args)
+      (activate target (lookup-slot target slot-name) args))
+    {:type :send :slots {:target target :message {:type :message :value slot-name}}}
+    (do
+      (println "send-without-args" target slot-name)
+      (activate target (lookup-slot target slot-name) []))
     {:type :message :value slot-name :slots {:args args}}
-    (activate env (lookup-slot env slot-name) args)
+    (do
+      (println "message" slot-name args)
+      (activate env (lookup-slot env slot-name) args))
     {:type :message :value slot-name}
-    (activate env (lookup-slot env slot-name) [])))
+    (do
+      (println "message-without-args" 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 [{:keys [value]}]
                 (oi-boolean (< n value)))}
   :proto initial})

(defn oi-string [s]

    [:boolean b]
    (oi-boolean (= b "true"))
    [:send target msg]
    (oi-send (ast->runtime target) (ast->runtime msg))
    [:message name]
    (oi-message name)
    [:message name [:arglist & args]]
