public override IObservable<TwitterStatus> Upload(Authorize.AuthenticateInfo authInfo, string status,
     byte[] attachedImageBin, long? in_reply_to_status_id = null,
     double? geo_lat = null, double? geo_long = null)
 {
     var param = new Dictionary<string, object>()
     {
         {"key", ApplicationKey},
         {"message", status},
     }.Parametalize();
     return new MultipartableOAuthClient(ApiEndpoint.DefaultConsumerKey, ApiEndpoint.DefaultConsumerSecret,
         authInfo.AccessToken)
     {
         Url = ApiEndpointUriString,
     }
     .AsOAuthEcho()
     .GetResponse(param.Select(p => new UploadContent(p.Key, p.Value))
         .Append(UploadContent.FromBinary("media", "attach.png", attachedImageBin)))
     .ReadString()
     .Select(s =>
     {
         using (var reader = new StringReader(s))
         {
             var doc = XDocument.Load(reader);
             return doc.Element("image").Element("url").ParseString();
         }
     })
     .SelectMany(s => authInfo.Update(status + " " + s, in_reply_to_status_id, geo_lat, geo_long));
 }