That's a question many programmers ask. Evidently this is something users have wanted for some time. This capability is possible principally through the use of objects.
Objects offer lots of advantages to programmers.
Face it, today's software is a lot more complicated than it was even a few years ago. Careful use of objects makes it possible to provide ever greater sophistication and functionality without turning the overall organization of a program into a nightmare. The key element here is bookkeeping. A good object does most or all its own bookkeeping. This makes it practical to provide functionality you wouldn't dream of trying to manage if you had to use procedural or modular programming.