add compose function
add partial function