Just to clarify: In Functional, the function is immutable and idempotent. It should be as simple as `sum = (x, y) => x + y. Doesn't matter how many times you call it with the same parameters, the output is the same. It does NOTHING except the intended function. It is, literally, the sense of a mathematical function (hence the name). It follows the UNIX philosophy (https://en.wikipedia.org/wiki/Unix_philosophy) In OOP, there should be two properties for the operands in the class (passed by it through the arguments of the constructor), then the same sum method. The only difference is that functional receives what it process (they can be static) and OOP stores the parameters in an instance for reutilization. Input --> Processing --> Output The basic data processing from the 50's still apply.