function composition instead of application