Access modifiers control whether a type (e.g., a class), or one of its properties can be used by other code. A public class, for instance, can be used by any code in any assembly. In this post we explore how the internal access modifier can provide a mechanism for enforcing boundaries in our architecture.