It is two-fold: first, the majority of protocols cannot implement an action in a generic way for all types.