Switch to factory pattern and use inheritence for NodeSet

Signed-off-by: Ken Barber <ken@bob.sh>