Commit to abstractions, not to details: Use the most generic and abstract means to implement a piece of functionality.