change protocol pattern