using nil-typed NodeSet instead of empty slice
using more expressive identifiers for objects
TODOs