add uploading functionality