refactor file upload - move transport to separate classes