more progress with protocol classes