replaced KPSignal funcs with swap! and reset! as it fits better