adding functional caller main