add @property annotation override
traits can't be type-hinted so we introduce an interface which classes
implement using the trait
fix a bunch of minor stuff to make the IDE and Scrutinizer happy
Merge remote-tracking branch 'upstream/master'