abstracting protocol references