    [hellhound.logger           :as log]
    [hellhound.component        :as hcomp])
 
-  (:import
-   (hellhound.component IComponent)
-   (clojure.lang IPersistentMap
-                 PersistentArrayMap
-                 PersistentVector)))
+
+  #?(:clj (:import
+           (hellhound.component IComponent)
+           (clojure.lang IPersistentMap
+                         PersistentArrayMap
+                         PersistentVector))))
 
 ;; Main storage for system data.
 (def system (atom {}))

  TODO: More explaination."
  {:public-api true
   :added      1.0}
  [^IPersistentMap system-map]
  (if-not (s/valid? ::system-map system-map)
    (throw (ex-info "Provided system is not valid"
                    {:cause (s/explain-data ::system-map system-map)})))

  (if (s/valid? :hellhound.component/component component)
    [(hcomp/get-name component) (hcomp/initialize component)]
    ;; If component did not satisfies component spec
    ;; TODO: fix the long line
    (throw (ex-info "Component does not satisfies ':hellhound.component/component' spec."
                    {:cause (hcomp/get-name component)
                     :explain (s/explain-data :hellhound.component/component component)}))))
