lot of work on file upload specifically