The key to solving complex problems is breaking them down into simpler ones.
The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.