Improve error message (@ElDeveloper )
A better way to store attributes (@wasade).
STY: More whitespace, and break long line (@wasade).