semi working upload