Protocol definition
Improvements and more examples