implement add_node()