Abstract base node class. Note that I need to redo documentation.