 ;; partition the users by 200
 
 (defn filter-people [people]
-  (let [all-the-people (if-not (empty? @filters)
-                         (let [my-filters (map #(create-filter-fn all-profile-keys %) @filters)]
-                           (filter (apply every-pred my-filters) people))
-                         people)
+  (let [all-the-people (try
+                         (if-not (empty? @filters)
+                           (let [my-filters (map #(create-filter-fn all-profile-keys %) @filters)]
+                             (filter (apply every-pred my-filters) people))
+                           people)
+                         (catch :default e
+                           (println "Error while filtering")
+                           (prn e)))
         nil->Out (fn [by-floors]
                  (into {}
                        (for [[k v] by-floors]
                          [(if (nil? k) "Out" k) v])))]
-    (->> all-the-people
+    (some->> all-the-people
              (group-by :KeyscanStatus)
              (nil->Out)  ; mark the OUT ones for better processing!
              (genome/filter-in?)

                                      (not (keyword? sym)) sym
                                      (some #{sym} thekeys) `(if (~sym ~my-user) (~sym ~my-user) "")
                                      :else sym))]
    (->>
     (read-string expr ,,,)
     (walk/postwalk replace-where-appropriate ,,,)
     ((fn [new-expr]
        `(fn [~my-user] ~new-expr)) ,,,,) 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; filter macro test
(defn eval-str [s]
  (try
    (eval (empty-state)
          s;(read-string s)
          {:eval       js-eval
           :source-map true
           :context    :expr}
          (fn [result] result))
    (catch :default e
      (println "Error while evaluating string")
      (prn e))))

;; Todo: Add ":my-bla"
(defn create-filter-fn 
