add function composition and partial application
add todos