Ok, these are two separate issues.

1) your point about VS A and VS B and Node A and Node B is a good one... I'll need to think about a solution for that. The problem is that Node's aren't aware of the VoxelSystem they are part of. So, the VoxelSystem would need to first validate that the node was really part of it. Does the AvatarVoxelSystem use this get/setBufferIndex() feature of VoxelNode?

2) wrt your suggestion for using a virtual interface for hooks, I agree that's an interesting improvement, and a cleaner way of implementing classes that implement hooks. But since these node hooks aren't new to this (we use them in the voxel server as well to remove nodes from bags in cases where the node gets deleted by animation while the server is in the midst of sending the scene)... I'd prefer to make this design improvement independent of this commit.