refactored
deleted NodeValue interface