new version
function 1
function 2
final version