```javascript
function UploadButton (opts) {
    var uploader = otps.uploader || this._createUploader(opts);
    var uploaderModal = new InputModal(uploader);
    var launchUploaderModalCmd = new LaunchModalCommand(uploaderModal);
    var authThenLaunchUploaderCmd = new AuthRequiredCommand(launchUploaderModal);

    uploader.on('data', function () {
        // I has an upload
    })

    Button.call(this, authThenLaunchUploaderCmd);
}
```