pipe and compose function