                                 ; falling on right timer no obstacle -> falling faster and accelerating right
                                 (when (< vx move-speed)
                                   (make-edge
-                                    (kw :falling dir (inc vx) (dec vy))
+                                    (kw :falling dir
+                                        (.min js/Math move-speed (+ vx air-move-acc))
+                                        new-vy)
                                     [:and
-                                     [:geq :acc-timer 0.005]
+                                     [:geq :acc-timer acc-interval]
                                      (non-bumping-guard opp walls wall-others)]
                                     #{[:on #{dir}] [:off #{opp}]}
                                     clear-timers))
                                 ; falling on left timer no obstacle -> falling faster and accelerating left, switch to opposite direction if vx-1 <= 0
                                 (make-edge
-                                  turning-state-accelerating
+                                  turning-state
                                   [:and
-                                   [:geq :acc-timer 0.005]
+                                   [:geq :acc-timer acc-interval]
                                    (non-bumping-guard dir walls wall-others)]
                                   #{[:on #{opp}] [:off #{dir}]}
                                   clear-timers)
                                 ; falling off right left timer -> falling faster and not accelerating
                                 (make-edge
-                                  (kw :falling dir vx (dec vy))
-                                  [:geq :acc-timer 0.005]
+                                  (kw :falling dir vx new-vy)
+                                  [:geq :acc-timer acc-interval]
                                   #{:required}
                                   clear-timers)
                                 ]

                           ;moving -> moving (faster)
                           (when (< vx move-speed)
                             (make-edge
                               (kw :moving dir (inc vx))
                               [:and
                                (non-bumping-guard dir walls wall-others)
                                [:geq :acc-timer 0.05]]
                               #{:required}
                               clear-timers))
                           ;moving -> jumping  (ascend controlled)

                           ; -> accelerate right or left
                           (when (< vx move-speed)
                             (make-edge
                               (kw :jumping dir (.min js/Math move-speed (+ vx air-move-acc)))
                               [:geq :acc-timer acc-interval]
                               #{[:on #{dir}]}
                               clear-acc-timer))
                           (if (< (- vx air-move-acc) 0)
                             (make-edge
                               (kw :jumping opp (.abs js/Math (- vx air-move-acc)))
                               [:geq :acc-timer acc-interval]
                               #{[:on #{opp}]}
                               clear-acc-timer)
                             (make-edge
                               (kw :jumping dir (.min js/Math move-speed (- vx air-move-acc)))
                               [:geq :acc-timer acc-interval]
                               #{[:on #{opp}]})))
                         ])
                      ]
