Am I right in thinking that it creates a new Pivot for every property?
Reading through it... yes.
I agree. Using a single pivot, with a comma (or pipe) seperated list of properties and values would be the better way to do it. This would mean the properties list could look like this.
delay=50|speed=100|class=transport
Then a function could be used that is passed the property name and gets the value returned (much as it is now)
The idea is good. It just doesn't work as efficiently as it could.
Using this method you could actually by pass the pivots altogether and just use the actual entities name.