Merge experimental branch into master

Backend currently handles the file upload correctly, and it is a stable branch upon which to build.