update algorithms