More rearrangement of traits.
Yet more trait refactoring...
Added change missed in last commit.
Implemented structured properties.
Refactored reusable code into traits.