refactor uploader system