     (str "#define " (:name m))))
 
 (defn include
-  ([file system? & dependencies]
-     {:type :include
-      :file file
-      :system system?
-      :dependencies dependencies})
-  ([file system?]
-     (include file system? nil))
-  ([file]
-     (include file false nil)))
+  [file system? & dependencies]
+  {:type :include
+   :file file
+   :system system?
+   :dependencies dependencies})
 
 (defemit :include [m]
   (if (:system m)


(defn find-dependencies [s expr]
  (let [deps (:dependencies expr)]
    (println deps)
    (cond
     deps (do
            (println (concat deps (map find-dependencies s deps)))
            (concat deps (map find-dependencies s deps))))))

(defn emit-program [s]

    (str "#include \"" (:file m) "\"")))

(defn ifdef
  [cond then else & dependencies]
  {:type :ifdef
   :cond cond
   :then then
   :else else
   :dependencies dependencies})

(defemit :ifdef [m]
  (if (:else m)
