completely rewritten the UI synch part - it now appears to me to have zero rubberbanding