separate update_graph function