photo upload implemented, most of the way