extend protocol