public async Task<ActionResult> GetSpeaker(int id)
		{
			var speakerDataProvider = new SpeakerDataProvider();
			var speaker = speakerDataProvider.GetSpeaker(id);
			var sessions = speakerDataProvider.GetSpeakerSessions(id);
			return Json(new { Sessions = await sessions, Speaker = await speaker }, JsonRequestBehavior.AllowGet);
		}
		public void GetSpeakersAsync()
		{
			var speakerDataProvider = new SpeakerDataProvider();
			AsyncManager.OutstandingOperations.Increment();
			speakerDataProvider.GetSpeakers().ContinueWith(d =>
			{
				AsyncManager.Parameters["speakers"] = d.Result;
				AsyncManager.OutstandingOperations.Decrement();
			});
		}
		public async Task<ActionResult> Image(int id, int size = 128)
		{
			var speakerDataProvider = new SpeakerDataProvider();
			var image = await speakerDataProvider.GetSpeakerImage(id);
			if (image == null)
			{
				return File("~/Content/images/anon.jpg", "image/jpeg", "anon.jpg");
			}
			var resizedImage = ImageResizer.ResizeImage(image, size);
			return File(resizedImage, "image/png", id + ".png");
		}
		public void ImageAsync(int id, int size = 128)
		{
			AsyncManager.OutstandingOperations.Increment();
			var speakerDataProvider = new SpeakerDataProvider();
			speakerDataProvider.GetSpeakerImage(id).ContinueWith(d =>
			{
				AsyncManager.Parameters["image"] = d.Result;
				AsyncManager.Parameters["size"] = size;
				AsyncManager.Parameters["id"] = id;
				AsyncManager.OutstandingOperations.Decrement();
			});
		}
		public void GetSpeakerAsync(int id)
		{
			var speakerDataProvider = new SpeakerDataProvider();
			AsyncManager.OutstandingOperations.Increment(2);
		    speakerDataProvider.GetSpeaker(id).ContinueWith(d =>
		        {
		            AsyncManager.Parameters["speaker"] = d.Result;
		            AsyncManager.OutstandingOperations.Decrement();
		        }).ContinueWith(r =>
		                            {
                                        speakerDataProvider.GetSpeakerSessions(id).ContinueWith(d =>
                                        {
                                            AsyncManager.Parameters["sessions"] = d.Result;
                                            AsyncManager.OutstandingOperations.Decrement();
                                        });
		                            });

		}
		public async Task<ActionResult> GetSpeakers()
		{
			var speakerDataProvider = new SpeakerDataProvider();
			var speakers = await speakerDataProvider.GetSpeakers();
			return Json(new { Result = speakers }, JsonRequestBehavior.AllowGet);
		}