From a security perspective, it solves reentrancy attacks, as well as being able to define modules for each part of your code