add proto method and modify extend method internal workflow. API same