breaking out common node functionality into BaseNode