functional approach
x