Implement protocol + protocol documentation + C gitignore added