uploader now use client.is_available to determine if it's ready to upload, and some tiny changes