For folks familiar with Crossplane, you likely know that we adopt the design practice of using interfaces over implementations as frequently as possible. Even if we begin with an implementation, such as the current composition engine, we make sure to consider a future with potentially many implementations for the same functionality. One of the places where we have taken advantage of Kubernetes’ similar approach to interfaces is in how we cache Crossplane package images.