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