rename protocol factory