add node implementation, just for fun