#1 Upload only the files that have changed.

I did this in a separate branch today because it involved a lot of experimentation with testing configuration. But it's ready to be merged back in now.