add more upload functions