final functions added