 All packages are physically separated.In the ApplicationLayer there is a concrete implementation that Page class will use.Instances of this interface are created dynamically by a Factory (possibly in the same Controllers package).