   (field* [_] "Field constructor"))
 
 (defprotocol ITable
-  (table [_] "Table constructor"))
+  (table* [_] "Table constructor"))
 
 (defprotocol IName
   (name [_] "Name constructor"))
 
+(defprotocol IOnStep
+  (on [_ conditions]))
+
 (defprotocol ICondition
-  (condition [_] "Condition constructor"))
+  (condition* [_] "Condition constructor"))
 
 (defprotocol IVal
   (val [_] "Val constructor"))

(defn or
  "Logican operator `or`."
  [& conditions]
  (let [conditions (map condition conditions)]
    (reduce (fn [acc v] (.or acc v))
            (first conditions)
            (rest conditions))))

(defn and
  "Logican operator `and`."
  [& conditions]
  (let [conditions (map condition* conditions)]
    (reduce (fn [acc v] (.and acc v))
            (first conditions)
            (rest conditions))))
