One core difference between object-oriented and procedural code can be found in the way that responsibility
is distributed. Procedural code takes the form of a sequential series of commands and method calls. The controlling
code tends to take responsibility for handling differing conditions. This top-down control can result in the
development of duplications and dependencies across a project. Object-oriented code tries to minimize these
dependencies by moving responsibility for handling tasks away from client code and toward the objects in the system.