more work for live updating