Dependency Inversion Principle

High-level policy and low-level detail should depend on abstractions owned by the stable policy side.