Generic applications
Imagine an abstraction for the operations you care about in
- a database system
- a window system
Then (in principle) you could write an application as a template (or local equivalent) that takes a database and a window system as parameters