added kalman filter implementation