update final functions