upload functionality update