Which of the following are valid reasons why protocols are separated into layers? (hint: more than one answer is correct!) Different layers can be provided by different organisations / vendors Different layers (e.g. at layer 4) can be selected depending on the needs of the application, while sharing a common implementation of lower-level layers Because performance will always be better if functions are split into distinct layers Modularising functionality allows changes within one layer without affecting other layers Modularising functionality allows changes in one layer to affect only the layers immediately above and below that layer but not other layers.