because you should leave everything free until the last step, where you make everything a final class. Otherwise, you lose the reference to the types implementing the corresponding interfaces. This is a bit tricky to explain.