node class hierarchy refactored