Using immutable map for attributes, and ensuring no nullable key-value pairs are added
Passing the protocol variable in correct order