Add more type annotation to Protocol