defining a Function framework with improved composability and ability to pipe a function's output to another function's input