node implementation