public async Task<ActionResult> Create(Project project)
		{
			try
			{
				ProjectsRepository projectRepository = new ProjectsRepository();
				var result = await projectRepository.CreateProject(project);
				return RedirectToAction("Index", "Home");
			}
			catch (RedirectRequiredException x)
			{
				return Redirect(x.RedirectUri.ToString());
			}
		}
		public async Task<Project> CreateProject(Project project)
		{
			StringBuilder requestUri = new StringBuilder()
					 .Append(this.SiteUrl)
					 .Append("/_api/web/lists/getbyTitle('")
					 .Append(this.ProjectsListName)
					 .Append("')/items");

			XElement entry = project.ToXElement((string)base.GetFromCache(this.ProjectsListName));

			StringContent requestContent = new StringContent(entry.ToString());
			HttpResponseMessage response = await this.Post(requestUri.ToString(), requestContent);
			string responseString = await response.Content.ReadAsStringAsync();

			return XElement.Parse(responseString).ToProject();
		}
		public async Task<ActionResult> Delete(Project project)
		{
			try
			{
				ProjectsRepository repository = new ProjectsRepository();
				if (await repository.DeleteProject(project.Id, project.__eTag))
				{
					return RedirectToAction("Index", "Home");
				}
				else
				{
					return View(project);
				}
			}
			catch (RedirectRequiredException x)
			{
				return Redirect(x.RedirectUri.ToString());
			}
		}
		public async Task<ActionResult> Edit(Project project)
		{
			try
			{
				ProjectsRepository repository = new ProjectsRepository();
				if (await repository.UpdateProject(project))
				{
					return RedirectToAction("View", "Home", new { projectId = project.Id });
				}
				else
				{
					return View(project);
				}
			}
			catch (RedirectRequiredException x)
			{
				return Redirect(x.RedirectUri.ToString());
			}
		}
		public async Task<bool> UpdateProject(Project project)
		{
			StringBuilder requestUri = new StringBuilder()
					.Append(this.SiteUrl)
					.Append("/_api/web/lists/getbyTitle('")
					.Append(this.ProjectsListName)
					.Append("')/getItemByStringId('")
					.Append(project.Id.ToString())
					.Append("')");

			XElement entry = project.ToXElement((string)base.GetFromCache(this.ProjectsListName));

			StringContent requestContent = new StringContent(entry.ToString());
			HttpResponseMessage response = await this.Patch(requestUri.ToString(), project.__eTag, requestContent);
			return response.IsSuccessStatusCode;
		}