add ui and implement upload logic