Yeah I realise this breaks compatibility, but unfortunately this was difficult to avoid if I wanted to separate these two functions out... 

Though it feels like the right thing as so many other functions rely on just getting properties for a single node, so in many respects it has simplified things.

I realise there are some quite big changes in this PR, but the improvements speak for themselves :)