better error handling and support for unlimited upload file size