Musings on protocols and delegates