private byte[] requestImage(SID sid) {
			ensureLoggedIn();

			var getResponse = WebSession.Get(string.Format("https://intranet.avegagroup.se/templates/UserDetails.aspx?id=1105&SID={0}", sid.Value));

			var contentHtml = getResponse.TextContent;
			HtmlTagReader tagReader = new HtmlTagReader(contentHtml, "img");

			while (tagReader.GetNextTag()) {
				var hrefValue = HtmlTagReader.GetAttributeValueInTag(tagReader.CurrentTag.Content, "src");

				if (hrefValue != null && hrefValue.Contains("/upload/Medarbetarbilder/")) {
					var imgResponse = WebSession.Get("https://intranet.avegagroup.se" + hrefValue);

					return imgResponse.RawResponse;
				}						
			}
			return null;
		}
		/// <summary>
		/// Parses HTML-content and returns a KeyValueCollection with values from the HTMLs Input-fields
		/// </summary>
		/// <param name="html"></param>
		/// <returns></returns>
		public static KeyValueCollection ParseInputFieldsFromHtmlResponse(string html) {
            if (string.IsNullOrEmpty(html)) { return new KeyValueCollection(); }

			var dictionary = new KeyValueCollection();

			HtmlTagReader htmlTagReader = new HtmlTagReader(html, "input");

			while (htmlTagReader.GetNextTag()) {
				string tagHtml = htmlTagReader.CurrentTag.Content;
				string name = HtmlTagReader.GetAttributeValueInTag(tagHtml, "name"); ;
				string value = HtmlTagReader.GetAttributeValueInTag(tagHtml, "value");

                if (!string.IsNullOrEmpty(name))
                {
					dictionary.Add(name, value ?? string.Empty);
				}
			}

			return dictionary;
		}
		private int countTotalContact(string contactListHtml) {
			int count = 0;
			HtmlTagReader tagReader = new HtmlTagReader(contactListHtml, "a");
			while (tagReader.GetNextTag()) {
				var hrefValue = HtmlTagReader.GetAttributeValueInTag(tagReader.CurrentTag.Content, "href");
				if (hrefValue.Contains("templates/vcard.aspx")) {
					count++;
				}
			}
			
			return count;
		}
		private IList<AvegaContact> getContactsRequest(int start, int contactsToGet) {
			ensureLoggedIn();

			IList<AvegaContact> contacts = new List<AvegaContact>();

			string uri = "https://intranet.avegagroup.se/templates/UserList.aspx?id=105";
			var listGet = WebSession.Get(uri);

			string listResponse = listGet.TextContent;
			HtmlTagReader tagReader = new HtmlTagReader(listResponse, "a");
			
			int totalContactInList = countTotalContact(listResponse);
			int totalContactToFetch = Math.Min(contactsToGet - start, totalContactInList);


			int count = 0;
			OnContactDataFetched(new ContactDataFetchedEventArgs(count, totalContactInList, totalContactToFetch, DataFetchedType.ListIndex));
			while (tagReader.GetNextTag()) {
				var hrefValue = HtmlTagReader.GetAttributeValueInTag(tagReader.CurrentTag.Content, "href");

				if (hrefValue.Contains("templates/vcard.aspx")) {
					var sid = SID.Find(hrefValue);

					if (start <= count && contactsToGet + start > count) {
						AvegaContact contact = new AvegaContact(sid);

						contact.Merge(requestVCard(sid));
						OnContactDataFetched(new ContactDataFetchedEventArgs(count + 1, totalContactInList, totalContactToFetch, DataFetchedType.ContactInformation));

						contact.SetImage(requestImage(sid));
						OnContactDataFetched(new ContactDataFetchedEventArgs(count + 1, totalContactInList, totalContactToFetch, DataFetchedType.Image));

						contacts.Add(contact);

						count++;
					}
				}
			}

			return contacts;
		}