1. add upload function