add upload functionality