Often, in object-oriented programming, the programmer has to choose whether one entity maintains visibility to another, or vice versa. The entity that is aware of the other entity is the one who would lose reusability due to its new dependency on the other entity. Often, the programmer would like to keep both entities independent from one another, in which case a bridge can be created, which is a small component that acts as a proxy between those entities. In way of providing the necessary services from one entity to another, it would communicate with one to acquire the service, and communicate the result to another. By creating a component that is completely un-reusable, the programmer can keep all other entities concerned independent.