implementing protocol assignments