Added protocols and types