upload framework: initial upload