diff --git a/api/hybridanalysis.go b/api/hybridanalysis.go
index d42a5b288a16c42df83ff27829ec011cf6f6bc6b..32e2371427933eb0402ca020441e49c480ee93d3 100644
--- a/api/hybridanalysis.go
+++ b/api/hybridanalysis.go
@@ -11,14 +11,12 @@ import (
 	"strings"
 	"sync"
 	"time"
-	//"golang.org/x/tools/go/analysis/passes/nilfunc"
 )
 
 // CallHybridAnalysisHash function takes a hash, returns data on it from the hybridanalysis api
+// API endpoint documentation https://www.hybrid-analysis.com/docs/api/v2#/Search/post_search_hash
 func CallHybridAnalysisHash(hash string, response *utils.FrontendResponse2, wg *sync.WaitGroup) {
 
-	// API dokumentasjon https://www.hybrid-analysis.com/docs/api/v2#/Search/post_search_hash
-
 	defer wg.Done()
 
 	response.SourceName = "Hybrid Analysis"
@@ -49,11 +47,7 @@ func CallHybridAnalysisHash(hash string, response *utils.FrontendResponse2, wg *
 	fmt.Println("\nStatus paa request", res.Status)
 	if res.StatusCode == 200 {
 
-		//fmt.Println("response Status:", res.Status)
-		//fmt.Print("Response Headers:", res.Header)
 		body, _ := ioutil.ReadAll(res.Body)
-		fmt.Println("\nBody", string(body))
-		//fmt.Println("response Body:", string(body))
 
 		var jsonResponse utils.HybridAnalysishash
 
@@ -77,38 +71,30 @@ func CallHybridAnalysisHash(hash string, response *utils.FrontendResponse2, wg *
 }
 
 // CallHybridAnalyisUrl function takes a url, returns data on it from the hybridanalysis api
+// https://www.hybrid-analysis.com/docs/api/v2#/Quick%20Scan/post_quick_scan_url Documentation for contacted endpoint
 func CallHybridAnalyisUrl(URL string) (VirusTotal utils.FrontendResponse, urlscanio utils.FrontendResponse) {
 
-	fmt.Println("HYBRID URL: ", URL)
-	//DENNE FUNKSJONENE KAN SCANNE EN URL MEN DETTE BENYTTER SEG AV VIRUS TOTAL/
-	// DETTE ER KANSKJE EN GOD WORK AROUND FOR Å KUNNE BRUKE VT GRATIS SIDEN Hybrid Analysis har lisens.
-	// Problem her kan være at dette må inkomporere en "await - 5-15 sekunder
-	// om det ikke er noe cachet result på VirusTotal, fordi den maa kjore ny request.".
-	// Titter på dette.
-	// Vi har CAP på 2000 request i timen hos Hybrid Analyis, dette burde vell holde??? - 200 max i minuttet.
-	// https://www.hybrid-analysis.com/docs/api/v2#/Quick%20Scan/post_quick_scan_url Dokumentasjon for dette API endpointet.
-
 	APIKey := utils.APIKeyHybridAnalysis
 
 	postURL := "https://www.hybrid-analysis.com/api/v2/quick-scan/url"
 
 	data := url.Values{}
-	data.Set("scan_type", "all")
-	data.Set("url", URL)
-	data.Set("no_share_third_party", "true")
-	data.Set("allow_community_access", "false")
-	//data.Set("submit_name","")
+	data.Set("scan_type", "all")                //What type of scan to perform
+	data.Set("url", URL)                        //Sets URL to search
+	data.Set("no_share_third_party", "true")    //Makes the search not accessible to 3-rd party others
+	data.Set("allow_community_access", "false") //Does not share search with community
 
-	req, err := http.NewRequest("POST", postURL, strings.NewReader(data.Encode()))
+	req, err := http.NewRequest("POST", postURL, strings.NewReader(data.Encode())) //Sets the new request.
 	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
-	req.Header.Set("api-key", APIKey)
-	req.Header.Set("User-Agent", "Falcon Sandbox")
+	req.Header.Set("api-key", APIKey)              //Set API key
+	req.Header.Set("User-Agent", "Falcon Sandbox") //Set USER-AGENT, just to bypass user-agent check - See documentation on API
 
 	client := &http.Client{}
 
 	res, err := client.Do(req)
 	if err != nil {
-		panic(err)
+		fmt.Println("Error in request")
+		logging.Logerror(err, "Error in request Hybrid Analysis")
 	}
 	defer res.Body.Close()
 
@@ -138,7 +124,7 @@ func CallHybridAnalyisUrl(URL string) (VirusTotal utils.FrontendResponse, urlsca
 	}
 
 	if !jsonResponse.Finished {
-		time.Sleep(20 * time.Second) //Får prøve å finne en bedre løsning enn dette men det er det jeg har for now.
+		time.Sleep(20 * time.Second)
 
 		res, err := client.Do(req)
 		if err != nil {
@@ -178,55 +164,43 @@ func CallHybridAnalyisUrl(URL string) (VirusTotal utils.FrontendResponse, urlsca
 	return VirusTotal, urlscanio
 }
 
+//Function to perform request to the Hybrid Analysis API for URL and domain intelligence.
+// https://www.hybrid-analysis.com/docs/api/v2#/Quick%20Scan/post_quick_scan_url Documentation on used API endpoint.
+
 func TestHybridAnalyisUrl(URL string, VirusTotal *utils.FrontendResponse2, urlscanio *utils.FrontendResponse2, wg *sync.WaitGroup) {
 
 	defer wg.Done()
 
-	fmt.Println("HYBRID URL: ", URL)
-	//DENNE FUNKSJONENE KAN SCANNE EN URL MEN DETTE BENYTTER SEG AV VIRUS TOTAL/
-	// DETTE ER KANSKJE EN GOD WORK AROUND FOR Å KUNNE BRUKE VT GRATIS SIDEN Hybrid Analysis har lisens.
-	// Problem her kan være at dette må inkomporere en "await - 5-15 sekunder
-	// om det ikke er noe cachet result på VirusTotal, fordi den maa kjore ny request.".
-	// Titter på dette.
-	// Vi har CAP på 2000 request i timen hos Hybrid Analyis, dette burde vell holde??? - 200 max i minuttet.
-	// https://www.hybrid-analysis.com/docs/api/v2#/Quick%20Scan/post_quick_scan_url Dokumentasjon for dette API endpointet.
-
 	APIKey := utils.APIKeyHybridAnalysis
 
 	postURL := "https://www.hybrid-analysis.com/api/v2/quick-scan/url"
 
 	data := url.Values{}
-	data.Set("scan_type", "all")
-	data.Set("url", URL)
-	data.Set("no_share_third_party", "true")
-	data.Set("allow_community_access", "false")
-	//data.Set("submit_name","")
+	data.Set("scan_type", "all")                //Sets the scan type.
+	data.Set("url", URL)                        //Sets the URL to be searched
+	data.Set("no_share_third_party", "true")    //Does not share search with 3rd party
+	data.Set("allow_community_access", "false") //Sets it so that search is not shared with community.
 
-	req, err := http.NewRequest("POST", postURL, strings.NewReader(data.Encode()))
-	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
-	req.Header.Set("api-key", APIKey)
-	req.Header.Set("User-Agent", "Falcon Sandbox")
+	req, err := http.NewRequest("POST", postURL, strings.NewReader(data.Encode())) //Creates new post request
+	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")            //Sets required content type
+	req.Header.Set("api-key", APIKey)                                              //Adds the API key
+	req.Header.Set("User-Agent", "Falcon Sandbox")                                 //Sets user agent to falcon sandbox, to bypass user agent check.
 
 	client := &http.Client{}
 
 	res, err := client.Do(req)
 	if err != nil {
-		panic(err)
+		fmt.Println(err, "Error in request to Hybrid Analysis - URL endpoint. ")
+		logging.Logerror(err, "Error in request to Hybrid Analysis - URL")
+		utils.SetGenericError(VirusTotal)
+		utils.SetGenericError(urlscanio)
+		return
 	}
 	defer res.Body.Close()
 
 	fmt.Println("response Status:", res.Status)
 	if res.StatusCode == http.StatusOK {
 
-		// res.Body.Read("finished") Her skal jeg føre en sjekk som sjekker om "finished = true eller false"
-
-		// Hvis denne er false skal den vente 5 sekunder og kjøre requesten på nytt.
-		// Eventuelt om det er en måte å ikke close requesten før den er finished???????
-
-		// Her kan det sjekkes om VirusTotal - Status er Malicious og om Urlscan.io
-		// - status er malicious, suspicious, clean etc. også bare returnere denne responsen.
-
-		//fmt.Print("Response Headers:", res.Header)
 		body, err := ioutil.ReadAll(res.Body)
 		if err != nil {
 			fmt.Println("Ioutil error:", err)
@@ -234,7 +208,6 @@ func TestHybridAnalyisUrl(URL string, VirusTotal *utils.FrontendResponse2, urlsc
 
 		}
 
-		//var jsonData map[string]interface{}
 		var jsonResponse utils.HybridAnalysisURL
 
 		err = json.Unmarshal(body, &jsonResponse)
@@ -243,11 +216,14 @@ func TestHybridAnalyisUrl(URL string, VirusTotal *utils.FrontendResponse2, urlsc
 		}
 
 		if !jsonResponse.Finished {
-			time.Sleep(40 * time.Second) //Får prøve å finne en bedre løsning enn dette men det er det jeg har for now.
+			time.Sleep(40 * time.Second) //In case the analysis is not finished, we wait 40 seconds to perform a new request.
 
 			res, err := client.Do(req)
 			if err != nil {
-				panic(err)
+				fmt.Println(err, "Error in request to Hybrid Analysis - URL endpoint. ")
+				logging.Logerror(err, "Error in request to Hybrid Analysis - URL")
+				utils.SetGenericError(VirusTotal)
+				utils.SetGenericError(urlscanio)
 			}
 			defer res.Body.Close()
 
@@ -268,32 +244,50 @@ func TestHybridAnalyisUrl(URL string, VirusTotal *utils.FrontendResponse2, urlsc
 		fmt.Println(jsonResponse)
 		VirusTotal.SourceName = jsonResponse.Scanners[0].Name
 		urlscanio.SourceName = jsonResponse.Scanners[1].Name
-		/*
-				VirusTotal.Status = jsonResponse.Scanners[0].Status
 
-				// Set the clean value to safe instead for frontend display.
-				if VirusTotal.Status == "clean" {
-					VirusTotal.Status = "Safe"
-				}
+		utils.SetResponseObjectVirusTotal(jsonResponse, VirusTotal)
+		utils.SetResponseObjectUrlscanio(jsonResponse, urlscanio)
+	} else if res.StatusCode == http.StatusBadRequest {	//Added a special check here to see if the domain does not ecist
 
-				urlscanio.SourceName = jsonResponse.Scanners[1].Name
-				urlscanio.Status = jsonResponse.Scanners[1].Status
+		body, err := ioutil.ReadAll(res.Body)		//If body can not be read, default to generic error
+		if err != nil {
+			fmt.Println("Ioutil error:", err)
+			logging.Logerror(err, "Ioutil error HybridAnalysis: ")
+			VirusTotal.SourceName = "VirusTotal"
+			urlscanio.SourceName = "urlscan.io"
 
-				fmt.Println("Attempted HybridAnalysisURL output VT:", VirusTotal.SourceName, "   Status:", VirusTotal.Status)
-				fmt.Println("\n\nAttempted HybridAnalysisURL output VT:", urlscanio.SourceName, "   Status:", urlscanio.Status)
-			} else {
-				VirusTotal.SourceName = "VirusTotal"
-				VirusTotal.Status = "Error"
+			utils.SetGenericError(VirusTotal)
+			utils.SetGenericError(urlscanio)
+		}
 
-				urlscanio.SourceName = "urlscan.io"
-				urlscanio.Status = "Error"
-			}
-		*/
-		fmt.Println("WHAT IS THIS \n\n\n", jsonResponse.Finished)
-		fmt.Println("URLSCANIO STATUS:", jsonResponse.Scanners[1].Status)
+		var jsonResponse utils.HybridAnalysisBadRequest
+
+		err = json.Unmarshal(body, &jsonResponse)		//If json data can not be unmarshaled default to generic error struct
+		if err != nil {
+			fmt.Println(err)
+			logging.Logerror(err, "Ioutil error HybridAnalysis: ")
+			VirusTotal.SourceName = "VirusTotal"
+			urlscanio.SourceName = "urlscan.io"
+
+			utils.SetGenericError(VirusTotal)
+			utils.SetGenericError(urlscanio)
+		}
+		if jsonResponse.Message == "Failed to download file: domain does not exist" {	//If message contains this, it means domain does not exist
+			VirusTotal.SourceName = "VirusTotal"
+			VirusTotal.EN.Status = "Safe"
+			VirusTotal.EN.Content = "Domain does not exist"
+
+			VirusTotal.NO.Status = "Trygg"
+			VirusTotal.NO.Content = "Domenet eksisterer ikke"
+
+			urlscanio.SourceName = "urlscan.io"
+			urlscanio.EN.Status = "Safe"
+			urlscanio.EN.Content = "Domain does not exist"
+
+			urlscanio.NO.Status = "Trygg"
+			urlscanio.NO.Content = "Domenet eksisterer ikke"
+		}
 
-		utils.SetResponseObjectVirusTotal(jsonResponse, VirusTotal)
-		utils.SetResponseObjectUrlscanio(jsonResponse, urlscanio)
 	} else {
 		VirusTotal.SourceName = "VirusTotal"
 		VirusTotal.EN.Status = "Error"
@@ -302,6 +296,5 @@ func TestHybridAnalyisUrl(URL string, VirusTotal *utils.FrontendResponse2, urlsc
 		urlscanio.SourceName = "urlscan.io"
 		urlscanio.EN.Status = "Error"
 		urlscanio.NO.Status = "Error"
-
 	}
 }