necessary upload function