So coming back to this; I see one issue with the interface separation. The constants used for errors, and views, are all ones that are specifically used by the protocol. They are mentioned and explained, so it's still fitting to include them in a cas-protocol interface. Unless you'd want to have:

```
CasProtocolViewConstants
CasProtocolErrorConstants
```

etc?