Principles, patterns, etc. at the implementation level are concerned with the actual code. How to use control structures, how to implement an algorithm, how to make the implementation of a method readable, etc are the questions addressed. These aspects are confined to one module. Everything which makes considering the relationships between several modules, is rather a design than an implementation issue. Note that this distinction is not sharp. The inner workings of a class, how to use private methods can be regarded design (as private methods are modules in the sense used here) or implementation (as such considerations are rather code-centric and confined to the class.