add a better upload support