reorgainzing node functionality into separate headers
reorgainzing node functionality into separate headers