Core: Replace protected visibility by internal visibility
Core: Remove "default = null" from properties
Core: Add documentation
Remove Message