separate dropzone and upload logic.