allow function composition