control algorithm