diff --git a/app/Http/Controllers/MetaGerSearch.php b/app/Http/Controllers/MetaGerSearch.php
index 192e4f1f0a20f51e93d591c36817f1432d0ae867..79213bfe430b25aaf039b8211d4f03314fae0cf7 100644
--- a/app/Http/Controllers/MetaGerSearch.php
+++ b/app/Http/Controllers/MetaGerSearch.php
@@ -3,25 +3,47 @@
 namespace App\Http\Controllers;
 
 use App\Http\Controllers\Controller;
-use App\MetaGer\Forwarder;
+use Illuminate\Http\Request;
+#use App\MetaGer\Forwarder;
+#use App\MetaGer\Results;
+#use App\MetaGer\Search;
+use App;
+use App\MetaGer;
+
 
 class MetaGerSearch extends Controller
 {
-    /**
-     * Select a free Server to forward the Request to:
-     *
-     * @param  int  $id
-     * @return Response
-     */
-    public function forwardToServer()
+
+    public function test(Request $request, MetaGer $metager)
+    {
+        # Mit gelieferte Formulardaten parsen und abspeichern:
+        $metager->parseFormData($request);
+        if($metager->getFokus() !== "bilder" )
+        {
+            # Nach Spezialsuchen überprüfen:
+            $metager->checkSpecialSearches($request);
+        }
+        # Alle Suchmaschinen erstellen
+        $metager->createSearchEngines($request);
+        # Ergebnisse der Suchmaschinen kombinieren:
+        $metager->combineResults();
+        # Die Ausgabe erstellen:
+        return $metager->createView();
+    }
+
+    public function search(Request $request)
     {
+       
+ 
+        $searchengines = Search::loadSearchEngines($request);
+        $results = new Results($searchengines);
+
+        
         
-        return Forwarder::getFreeServer();
-        return var_dump($serversArray);
-        return $cfg['redis']['password'];
 
+        
 
-        #return view('index', [ 'title' => 'MetaGer: Sicher suchen & finden, Privatsphäre schützen']);
+        return print_r( $viewResults, TRUE);
     }
 
 }
\ No newline at end of file
diff --git a/app/Http/routes.php b/app/Http/routes.php
index 43915bd0a7662681422653092a2c87618fae4ca4..18df07b0da315249256df8de83ff55089aa63f7a 100644
--- a/app/Http/routes.php
+++ b/app/Http/routes.php
@@ -24,42 +24,44 @@
         Route::get('impressum', function()
         {
             return view('impressum')
-                ->with('title', 'Impressum')
+                ->with('title', 'Impressum - MetaGer')
                 ->with('css', 'impressum.css');
         });
 
         Route::get('about', function()
         {
             return view('about')
-                ->with('title', 'Ãœber Uns')
+                ->with('title', 'Ãœber Uns - MetaGer')
                 ->with('css', 'about.css');
         });
         Route::get('team', function()
         {
             return view('team.team')
-                ->with('title', 'Team')
+                ->with('title', 'Team - MetaGer')
                 ->with('css', 'team.css');
         });
         Route::get('team/pubkey-wsb', function()
         {
             return view('team.pubkey-wsb')
-                ->with('title', 'Team');
+                ->with('title', 'Team - MetaGer');
         });
 
         Route::get('kontakt', function()
         {
             return view('kontakt.kontakt')
-                ->with('title', 'Kontakt')
+                ->with('title', 'Kontakt - MetaGer')
                 ->with('css', 'kontakt.css')
                 ->with('js', ['openpgp.min.js','kontakt.js']);
         });
 
         Route::post('kontakt', 'MailController@contactMail');
 
+        Route::get('meta/meta.ger3', 'MetaGerSearch@search');
+
         Route::get('spende', function()
         {
             return view('spende')
-                ->with('title', 'Kontakt')
+                ->with('title', 'Spenden - MetaGer')
                 ->with('css', 'donation.css');
         });
         Route::post('spende', 'MailController@donation');
@@ -67,14 +69,16 @@
         Route::get('datenschutz', function()
         {
             return view('datenschutz')
-                ->with('title', 'Datenschutz und Privatsphäre')
+                ->with('title', 'Datenschutz und Privatsphäre - MetaGer')
                 ->with('css', 'privacy.css');
         });
 
         Route::get('hilfe', function()
         {
             return view('hilfe')
-                ->with('title', 'MetaGer - hilfe')
+                ->with('title', 'Hilfe - MetaGer')
                 ->with('css', 'help.css');
         });
-    });
\ No newline at end of file
+
+        Route::get('meta/meta.ger3', 'MetaGerSearch@test');
+    });
diff --git a/app/MetaGer.php b/app/MetaGer.php
new file mode 100644
index 0000000000000000000000000000000000000000..2131b3028f314db3004b0851eed244be842523a5
--- /dev/null
+++ b/app/MetaGer.php
@@ -0,0 +1,399 @@
+<?php
+namespace App;
+
+use Illuminate\Http\Request;
+use Jenssegers\Agent\Agent;
+use App;
+use Storage;
+use Log;
+
+class MetaGer
+{
+	# Einstellungen für die Suche
+	protected $fokus;
+	protected $eingabe;
+	protected $q;
+	protected $category;
+	protected $time;
+	protected $page;
+	protected $lang;
+	protected $cache = "";
+	protected $site;
+	protected $hostBlacklist = [];
+	protected $domainBlacklist = [];
+	protected $stopWords = [];
+	protected $engines = [];
+	protected $results = [];
+	protected $warnings = [];
+    protected $errors = [];
+	# Daten über die Abfrage
+	protected $ip;
+	protected $language;
+	protected $agent;
+	# Konfigurationseinstellungen:
+	protected $sumaFile;
+	protected $mobile;
+	protected $resultCount;
+	protected $sprueche;
+    protected $domainsBlacklisted = [];
+    protected $urlsBlacklisted = [];
+    protected $url;
+
+	function __construct()
+	{
+        if( file_exists(config_path() . "/blacklistDomains.txt") && file_exists(config_path() . "/blacklistUrl.txt") )
+        {
+            # Blacklists einlesen:
+            $tmp = file_get_contents(config_path() . "/blacklistDomains.txt");
+            $this->domainsBlacklisted = explode("\n", $tmp);
+            $tmp = file_get_contents(config_path() . "/blacklistUrl.txt");
+            $this->urlsBlacklisted = explode("\n", $tmp);
+        }else
+        {
+            Log::warning("Achtung: Eine, oder mehrere Blacklist Dateien, konnten nicht geöffnet werden");
+        }
+	}
+
+	public function createView()
+	{
+		$viewResults = [];
+        # Wir extrahieren alle notwendigen Variablen und geben Sie an unseren View:
+        foreach($this->results as $result)
+        {
+            $viewResults[] = get_object_vars($result);
+        }
+        return view('metager3')
+            ->with('results', $viewResults)
+            ->with('eingabe', $this->eingabe)
+            ->with('warnings', $this->warnings)
+            ->with('errors', $this->errors);
+	}
+
+	public function combineResults ()
+	{
+		foreach($this->engines as $engine)
+		{
+			$this->results = array_merge($this->results, $engine->results);
+		}
+	}
+
+	public function createSearchEngines (Request $request)
+	{
+		# Curl-Multihandle um die Ergebnisse abzurufen:
+		$mh = curl_multi_init();
+
+		# Überprüfe, welche Sumas eingeschaltet sind
+        $xml = simplexml_load_file($this->sumaFile);
+        $enabledSearchengines = [];
+        $overtureEnabled = FALSE;
+        
+        if($this->fokus === "angepasst")
+        {
+            $sumas = $xml->xpath("suma");
+            foreach($sumas as $suma)
+            {
+                if($request->has($suma["service"]) 
+                	|| ( $this->fokus !== "bilder" 
+                		&& ($suma["name"]->__toString() === "qualigo" 
+                			|| $suma["name"]->__toString() === "similar_product_ads" 
+                			|| ( !$overtureEnabled && $suma["name"]->__toString() === "overtureAds" )
+                			)
+                		)
+                	){
+
+                	if(!(isset($suma['disabled']) && $suma['disabled']->__toString() === "1"))
+                    {
+                        if($suma["name"]->__toString() === "overture")
+                        {
+                            $overtureEnabled = TRUE;
+                        }
+                        $enabledSearchengines[] = $suma;
+                    }
+                }
+            }
+        }else{
+            $sumas = $xml->xpath("suma");
+            foreach($sumas as $suma){
+                $types = explode(",",$suma["type"]);
+                if(in_array($this->fokus, $types) 
+                	|| ( $this->fokus !== "bilder" 
+                		&& ($suma["name"]->__toString() === "qualigo" 
+                			|| $suma["name"]->__toString() === "similar_product_ads" 
+                			|| ( !$overtureEnabled && $suma["name"]->__toString() === "overtureAds" )
+                			)
+                		)
+                	){
+                    if(!(isset($suma['disabled']) && $suma['disabled']->__toString() === "1"))
+                    {
+                        if($suma["name"]->__toString() === "overture")
+                        {
+                            $overtureEnabled = TRUE;
+                        }
+                        $enabledSearchengines[] = $suma;
+                    }
+                }
+            }
+        }
+        
+        if( ( $this->fokus !== "bilder" && sizeof($enabledSearchengines) <= 3 ) || ( $this->fokus === "bilder" && sizeof($enabledSearchengines) === 0) )
+        {
+            $this->errors[] = "Achtung: Sie haben in ihren Einstellungen keine Suchmaschine ausgewählt.";
+        }
+
+		$engines = [];
+		foreach($enabledSearchengines as $engine){
+            $path = "App\Models\parserSkripte\\" . ucfirst($engine["name"]->__toString());
+            $tmp = new $path($engine, $mh, $this);
+            if($tmp)
+            {
+                $engines[] = $tmp;
+            }
+		}
+
+		# Nun führen wir die Get-Requests aus und warten auf alle Ergebnisse:
+		$running = null;
+		do
+		{
+			curL_multi_exec($mh, $running);
+		}while($running);
+
+		# Und beenden noch alle Handles
+		foreach($engines as $engine)
+		{
+			$engine->removeCurlHandle($mh);
+			$engine->loadResults();
+		}
+
+		# Und auch den Multicurl-Handle:
+		curl_multi_close($mh);
+        $string = ["Curl-Timings:"];
+        foreach($engines as $engine)
+        {
+            $string[] = $engine->getCurlInfo();
+        }
+        Log::debug($string);
+
+        $this->engines = $engines;
+	}
+
+	public function parseFormData (Request $request)
+	{
+		if($request->input('encoding', '') !== "utf8")
+		{
+			# In früheren Versionen, als es den Encoding Parameter noch nicht gab, wurden die Daten in ISO-8859-1 übertragen
+			$input = $request->all();
+			foreach($input as $key => $value)
+			{
+				$input[$key] = mb_convert_encoding("$value", "UTF-8", "ISO-8859-1");
+			}
+			$request->replace($input);
+		}
+        $this->url = $request->url();
+		# Zunächst überprüfen wir die eingegebenen Einstellungen:
+        # FOKUS
+        $this->fokus = trans('fokiNames.'
+        	. $request->input('focus', 'web'));
+        if(strpos($this->fokus,"."))
+        {
+            $this->fokus = trans('fokiNames.web');
+        }
+
+        # SUMA-FILE
+        if(App::isLocale("en")){
+            $this->sumaFile = config_path() . "/sumasEn.xml";
+        }else{
+            $this->sumaFile = config_path() . "/sumas.xml";
+        }
+        if(!file_exists($this->sumaFile))
+        {
+            die("Suma-File konnte nicht gefunden werden");
+        }
+
+        # Sucheingabe:
+        $this->eingabe = trim($request->input('eingabe', ''));
+        if(strlen($this->eingabe) === 0)
+        {
+            $this->warnings[] = 'Achtung: Sie haben keinen Suchbegriff eingegeben. Sie können ihre Suchbegriffe oben eingeben und es erneut versuchen.';
+        }
+        $this->q = $this->eingabe;
+
+        # IP:
+        if( isset($_SERVER['HTTP_FROM']) )
+        {
+            $this->ip = $_SERVER['HTTP_FROM'];
+        }else
+        {
+            $this->ip = "127.0.0.1";
+        }
+        # Language:
+        if( isset($_SERVER['HTTP_LANGUAGE']) )
+        {
+            $this->language = $_SERVER['HTTP_LANGUAGE'];
+        }else
+        {
+            $this->language = "";
+        }
+        # Category
+        $this->category = $request->input('category', '');
+        # Request Times:
+        $this->time = $request->input('time', 1);
+        # Page
+        $this->page = $request->input('page', 1);
+        # Lang
+        $this->lang = $request->input('lang', 'all');
+        if ( $this->lang !== "de" || $this->lang !== "en" || $this->lang !== "all" )
+        {
+        	$this->lang = "all";
+        }
+        $this->agent = new Agent();
+        $this->mobile = $this->agent->isMobile();
+        #Sprüche
+        $this->sprueche = $request->input('sprueche', 'on');
+        # Ergebnisse pro Seite:
+        $this->resultCount = $request->input('resultCount', '20');
+
+        # Manchmal müssen wir Parameter anpassen um den Sucheinstellungen gerecht zu werden:
+        if( $request->has('dart') )
+        {
+        	$this->time = 10;
+        	$this->warnings[] = "Hinweis: Sie haben Dart-Europe aktiviert. Die Suche kann deshalb länger dauern und die maximale Suchzeit wurde auf 10 Sekunden hochgesetzt.";
+        }
+        if( $this->time < 0 || $this->time > 20 )
+        {
+        	$this->time = 1;
+        }
+        if( $request->has('minism') && ( $request->has('fportal') || $request->has('harvest') ) )
+        {
+        	$input = $request->all();
+        	$newInput = [];
+        	foreach($input as $key => $value)
+        	{
+        		if( $key !== "fportal" && $key !== "harvest" )
+        		{
+        			$newInput[$key] = $value;
+        		}
+        	}
+        	$request->replace($newInput);
+        }
+        if( $request->has('ebay') )
+        {
+        	$this->time = 2;
+        	$this->warnings[] = "Hinweis: Sie haben Ebay aktiviert. Die Suche kann deshalb länger dauern und die maximale Suchzeit wurde auf 2 Sekunden hochgesetzt.";
+        }
+        if( App::isLocale("en") )
+        {
+        	$this->sprueche = "off";
+        }
+        if($this->resultCount <= 0 || $this->resultCount > 200 )
+        {
+        	$this->resultCount = 1000;
+        }
+        if( $request->has('onenewspageAll') || $request->has('onenewspageGermanyAll') )
+        {
+        	$this->time = 5000;
+        	$this->cache = "cache";
+        }
+	}
+
+	public function checkSpecialSearches (Request $request)
+	{
+		# Site Search:
+		if(preg_match("/(.*)\bsite:(\S+)(.*)/si", $this->q, $match))
+		{
+			$this->site = $match[2];
+			$this->q = $match[1] . $match[3];
+			$this->warnings[] = "Sie führen eine Sitesearch durch. Es werden nur Ergebnisse von der Seite: \"" . $this->site . "\" angezeigt.";
+		}
+		# Wenn die Suchanfrage um das Schlüsselwort "-host:*" ergänzt ist, sollen bestimmte Hosts nicht eingeblendet werden
+		# Wir prüfen, ob das hier der Fall ist:
+		while(preg_match("/(.*)(^|\s)-host:(\S+)(.*)/si", $this->q, $match))
+		{
+			$this->hostBlacklist[] = $match[3];
+			$this->q = $match[1] . $match[4];
+		}
+		if( sizeof($this->hostBlacklist) > 0 )
+		{
+			$hostString = "";
+			foreach($this->hostBlacklist as $host)
+			{
+				$hostString .= $host . ", ";
+			}
+			$hostString = rtrim($hostString, ", ");
+			$this->warnings[] = "Ergebnisse von folgenden Hosts werden nicht angezeigt: \"" . $hostString . "\"";
+		}
+		# Wenn die Suchanfrage um das Schlüsselwort "-domain:*" ergänzt ist, sollen bestimmte Domains nicht eingeblendet werden
+		# Wir prüfen, ob das hier der Fall ist:
+		while(preg_match("/(.*)(^|\s)-domain:(\S+)(.*)/si", $this->q, $match))
+		{
+			$this->domainBlacklist[] = $match[3];
+			$this->q = $match[1] . $match[4];
+		}
+		if( sizeof($this->domainBlacklist) > 0 )
+		{
+			$domainString = "";
+			foreach($this->domainBlacklist as $domain)
+			{
+				$domainString .= $domain . ", ";
+			}
+			$domainString = rtrim($domainString, ", ");
+			$this->warnings[] = "Ergebnisse von folgenden Domains werden nicht angezeigt: \"" . $domainString . "\"";
+		}
+		
+		# Alle mit "-" gepräfixten Worte sollen aus der Suche ausgeschlossen werden.
+		# Wir prüfen, ob das hier der Fall ist:
+		while(preg_match("/(.*)(^|\s)-(\S+)(.*)/si", $this->q, $match))
+		{
+			$this->stopWords[] = $match[3];
+			$this->q = $match[1] . $match[4];
+		}
+		if( sizeof($this->stopWords) > 0 )
+		{
+			$stopwordsString = "";
+			foreach($this->stopWords as $stopword)
+			{
+				$stopwordsString .= $stopword . ", ";
+			}
+			$stopwordsString = rtrim($stopwordsString, ", ");
+			$this->warnings[] = "Sie machen eine Ausschlusssuche. Ergebnisse mit folgenden Wörtern werden nicht angezeigt: \"" . $stopwordsString . "\"";
+		}
+
+		# Meldung über eine Phrasensuche
+		if(preg_match("/\"(.+)\"/si", $this->q, $match)){
+			$this->warnings[] = "Sie führen eine Phrasensuche durch: \"" . $match[1] . "\"";
+		}
+	}
+
+    public function getFokus ()
+    {
+        return $this->fokus;
+    }
+
+    public function getIp ()
+    {
+        return $this->ip;
+    }
+
+    public function getEingabe ()
+    {
+        return $this->eingabe;
+    }
+
+    public function getUrl ()
+    {
+        return $this->url;
+    }
+    public function getTime ()
+    {
+        return $this->time;
+    }
+
+    public function getLanguage ()
+    {
+        return $this->language;
+    }
+
+    public function getCategory ()
+    {
+        return $this->category;
+    }
+}
\ No newline at end of file
diff --git a/app/MetaGer/Results.php b/app/MetaGer/Results.php
deleted file mode 100644
index c71d956e1dde4cff092b46bc3af79b6121dffac4..0000000000000000000000000000000000000000
--- a/app/MetaGer/Results.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-namespace App\MetaGer;
-
-class Results
-{
-	
-}
\ No newline at end of file
diff --git a/app/MetaGer/Forwarder.php b/app/Models/Forwarder.php
similarity index 100%
rename from app/MetaGer/Forwarder.php
rename to app/Models/Forwarder.php
diff --git a/app/Models/Result.php b/app/Models/Result.php
new file mode 100644
index 0000000000000000000000000000000000000000..f05e1a31508552e93d9d266d333e35e74d88c009
--- /dev/null
+++ b/app/Models/Result.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+class Result
+{
+	
+	function __construct ( $titel, $link, $anzeigeLink , $descr, $gefVon )
+	{
+		$this->titel = trim($titel);
+		$this->link = trim($link);
+		$this->anzeigeLink = trim($anzeigeLink);
+		$this->descr = trim($descr);
+		$this->gefVon = trim($gefVon);
+	}
+}
\ No newline at end of file
diff --git a/app/Models/Results.php b/app/Models/Results.php
new file mode 100644
index 0000000000000000000000000000000000000000..c0cf8590e9fb68942f224c0b0a7ca16ef789fa7d
--- /dev/null
+++ b/app/Models/Results.php
@@ -0,0 +1,65 @@
+<?php
+
+namespace App\MetaGer;
+use Illuminate\Http\Request;
+use File;
+class Results
+{
+	private $fokiNames = [];
+	private $fokus;
+	public $results = [];
+
+	function __construct ($engines)
+	{
+		$this->results = $this->loadResults($engines);
+	}
+
+
+
+	private function get($getStrings){
+		# Nimmt ein array aus getStrings entgegen und liefert ein Array aus Antworten zurück:
+		# Zunächst alle Curl Abfragen initialisieren, aber noch nicht ausführen:
+		#return $getStrings;
+		#$getStrings = array($getStrings[0]);
+		$ch = [];
+		foreach($getStrings as $getString)
+		{
+			$tmp = curl_init($getString);
+			curl_setopt($tmp, CURLOPT_RETURNTRANSFER, true);
+			curl_setopt($tmp, CURLOPT_FOLLOWLOCATION, true);
+			curl_setopt($tmp, CURLOPT_CONNECTTIMEOUT , TIME); 
+			$ch[] = $tmp;
+		}
+
+		# Nun initialisieren wir Multicurl:
+		$mh = curl_multi_init();
+		foreach($ch as $handle)
+		{
+			curl_multi_add_handle($mh, $handle);
+		}
+
+		# Nun führen wir die Get-Requests aus und warten auf alle Ergebnisse:
+		$running = null;
+		do
+		{
+			curL_multi_exec($mh, $running);
+		}while($running);
+
+		# Wir haben alle Ergebnisse und schließen die Handles
+		foreach($ch as $handle)
+		{
+			curl_multi_remove_handle($mh, $handle);
+		}
+		# Und auch den Multicurl-Handle:
+		curl_multi_close($mh);
+
+		$results = [];
+		foreach($ch as $handle)
+		{
+			$results[] = curl_multi_getcontent($handle);
+		}
+
+		return $results;
+	}
+
+}
\ No newline at end of file
diff --git a/app/Models/Search.php b/app/Models/Search.php
new file mode 100644
index 0000000000000000000000000000000000000000..c3efb159898399dd4968507df0129d40102b15ad
--- /dev/null
+++ b/app/Models/Search.php
@@ -0,0 +1,66 @@
+<?php
+
+namespace App\MetaGer;
+use Illuminate\Http\Request;
+use App\MetaGer\Searchengine;
+
+class Search
+{
+	public static function loadSearchEngines(Request $request)
+	{
+
+        # Überprüfe, welche Sumas eingeschaltet sind
+        $xml = simplexml_load_file(SUMA_FILE);
+        $enabledSearchengines = [];
+        $overtureEnabled = FALSE;
+        
+        if(FOKUS === "angepasst")
+        {
+            $sumas = $xml->xpath("suma");
+            foreach($sumas as $suma)
+            {
+                if($request->has($suma["service"]) 
+                #	|| ( FOKUS !== "bilder" 
+                #		&& ($suma["name"]->__toString() === "qualigo" 
+                #			|| $suma["name"]->__toString() === "similar_product_ads" 
+                #			|| ( !$overtureEnabled && $suma["name"]->__toString() === "overtureAds" )
+               # 			)
+               # 		)
+                	){
+                	if($suma["name"]->__toString() === "overture")
+                	{
+                		$overtureEnabled = TRUE;
+                	}
+                    $enabledSearchengines[] = $suma;
+                }
+            }
+        }else{
+            $sumas = $xml->xpath("suma");
+            foreach($sumas as $suma){
+                $types = explode(",",$suma["type"]);
+                if(in_array(FOKUS, $types) 
+                #	|| ( FOKUS !== "bilder" 
+                	#	&& ($suma["name"]->__toString() === "qualigo" 
+                	#		|| $suma["name"]->__toString() === "similar_product_ads" 
+                #			|| ( !$overtureEnabled && $suma["name"]->__toString() === "overtureAds" )
+                #			)
+              #  		)
+                	){
+                	if($suma["name"]->__toString() === "overture")
+                	{
+                		$overtureEnabled = TRUE;
+                	}
+                    $enabledSearchengines[] = $suma;
+                }
+            }
+        }
+        
+		$engines = [];
+		foreach($enabledSearchengines as $engine){
+            $path = "App\MetaGer\parserSkripte\\" . $engine["name"]->__toString();
+			$engines[] = new $path($engine);
+		}
+
+        return $engines;
+	}
+}
\ No newline at end of file
diff --git a/app/Models/Searchengine.php b/app/Models/Searchengine.php
new file mode 100644
index 0000000000000000000000000000000000000000..92e8ea6c456a66b0d2c4e1d8b78f0c5c0af48c53
--- /dev/null
+++ b/app/Models/Searchengine.php
@@ -0,0 +1,136 @@
+<?php
+
+namespace App\Models;
+use App\MetaGer;
+
+abstract class Searchengine
+{
+
+	protected $ch; 	# Curl Handle zum erhalten der Ergebnisse
+	public $results = [];
+
+	function __construct(\SimpleXMLElement $engine, $mh, MetaGer $metager)
+	{
+		foreach($engine->attributes() as $key => $value){
+			$this->$key = $value->__toString();
+		}
+		# User-Agent definieren:
+		if( isset($_SERVER['HTTP_USER_AGENT']))
+		{
+			$this->useragent = $_SERVER['HTTP_USER_AGENT'];
+		}else
+		{
+			$this->useragent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1";
+		}
+		$this->ip = $metager->getIp();
+		$this->ch = curl_init($this->generateGetString($metager->getEingabe(), $metager->getUrl(), $metager->getLanguage(), $metager->getCategory()) );
+		curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true);
+		curl_setopt($this->ch, CURLOPT_USERAGENT, $this->useragent); // set browser/user agent
+		curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, 1); // automatically follow Location: headers (ie redirects)
+		curl_setopt($this->ch, CURLOPT_AUTOREFERER, 1); // auto set the referer in the event of a redirect
+		curl_setopt($this->ch, CURLOPT_MAXREDIRS, 5); // make sure we dont get stuck in a loop
+		curl_setopt($this->ch, CURLOPT_CONNECTTIMEOUT , $metager->getTime()); 
+		curl_setopt($this->ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 ); 
+		curl_setopt($this->ch, CURLOPT_TIMEOUT, 1); // 10s timeout time for cURL connection
+		if($this->port ==="443")
+		{
+			curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, true); // allow https verification if true
+			curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 2); // check common name and verify with host name
+			curl_setopt($this->ch, CURLOPT_SSLVERSION,3); // verify ssl version 2 or 3
+		}
+
+		$this->addCurlHandle($mh);
+	}
+
+	public abstract function loadResults();
+
+	public function getCurlInfo()
+	{
+		return curl_getinfo($this->ch);
+	}
+
+	public function addCurlHandle ($mh)
+	{
+		curl_multi_add_handle($mh, $this->ch);
+	}
+
+	public function removeCurlHandle ($mh)
+	{
+		curl_multi_remove_handle($mh, $this->ch);
+	}
+
+	private function generateGetString($query, $url, $language, $category)
+	{
+		$getString = "";
+		# Protokoll:
+		if($this->port === "443"){
+			$getString .= "https://";
+		}else{
+			$getString .= "http://";
+		}
+		# Host:
+		$getString .= $this->host;
+		# Port:
+		$getString .= ":" . $this->port;
+		# Skript:
+		$getString .= $this->skript;
+		# FormData:
+		$getString .= "?" . $this->formData;
+
+		# Wir müssen noch einige Platzhalter in dem GET-String ersetzen:
+		if( strpos($getString, "<<USERAGENT>>") ){
+			$getString = str_replace("<<USERAGENT>>", $this->urlEncode($this->useragent), $getString);
+		}
+
+		if( strpos($getString, "<<QUERY>>") )
+		{
+			$getString = str_replace("<<QUERY>>", $this->urlEncode($query), $getString);
+		}
+
+		if( strpos($getString, "<<IP>>") )
+		{
+			$getString = str_replace("<<IP>>", $this->urlEncode($this->ip), $getString);
+		}
+
+		if( strpos($getString, "<<LANGUAGE>>") )
+		{
+			$getString = str_replace("<<LANGUAGE>>", $this->urlEncode($language), $getString);
+		}
+
+		if( strpos($getString, "<<CATEGORY>>") )
+		{
+			$getString = str_replace("<<CATEGORY>>", $this->urlEncode($category), $getString);
+		}
+
+		if( strpos($getString, "<<AFFILDATA>>") )
+		{
+			$getString = str_replace("<<AFFILDATA>>", $this->getOvertureAffilData($url), $getString);
+		}
+		return $getString;
+	}
+
+	protected function urlEncode($string)
+	{
+		if(isset($this->inputEncoding))
+		{
+			return urlencode(mb_convert_encoding($string, $this->inputEncoding));
+		}else
+		{
+			return urlencode($string);
+		}
+	}
+
+	private function getOvertureAffilData($url)
+	{
+	    $affil_data = 'ip=' . $this->ip;
+	    $affil_data .= '&ua=' . $this->useragent;  
+	    if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) ) {
+	       $affil_data .= '&xfip=' . $_SERVER['HTTP_X_FORWARDED_FOR'];
+	    }
+	    $affilDataValue = $this->urlEncode($affil_data);
+		# Wir benötigen die ServeUrl:
+		$serveUrl = $this->urlEncode($url);
+
+		return "&affilData=" . $affilDataValue . "&serveUrl=" . $serveUrl;
+	}
+}
\ No newline at end of file
diff --git a/app/Models/parserSkripte/Fastbot.php b/app/Models/parserSkripte/Fastbot.php
new file mode 100644
index 0000000000000000000000000000000000000000..01d1af4720bb7c9023f545a95966511c429a6ae2
--- /dev/null
+++ b/app/Models/parserSkripte/Fastbot.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace app\Models\parserSkripte;
+use App\Models\Searchengine;
+
+class Fastbot extends Searchengine 
+{
+	public $results = [];
+
+	function __construct (\SimpleXMLElement $engine, $mh, \App\MetaGer $metager)
+	{
+		parent::__construct($engine, $mh, $metager);
+		if ( strpos($this->urlEncode($metager->getEingabe()), "%") !== FALSE )
+		{
+			$this->removeCurlHandle($mh);
+			return FALSE;
+		}
+	}
+
+	public function loadResults ()
+	{
+		$result = utf8_encode(curl_multi_getcontent($this->ch));
+		foreach( explode("\n", $result) as $line )
+		{
+			$line = trim($line);
+			if( strlen($line) > 0 ){
+				# Hier bekommen wir jedes einzelne Ergebnis
+				$result = explode("|:|", $line);
+				$link = $result[1];
+				$link = substr($link, strpos($link, "href=\"") + 6);
+				$link = substr($link, 0, strpos($link, "\""));
+				$this->results[] = new \App\Models\Result(
+					trim(strip_tags($result[1])),
+					$link,
+					$result[3],
+					$result[2],
+					"<a href=\"http://www.fastbot.de\">fastbot</a>"
+					);
+			}
+			
+		}
+
+	}
+}
\ No newline at end of file
diff --git a/app/Models/parserSkripte/Onenewspagegermany.php b/app/Models/parserSkripte/Onenewspagegermany.php
new file mode 100644
index 0000000000000000000000000000000000000000..7bc8eea604fcd5c2bd06cb77b20e985aa6206795
--- /dev/null
+++ b/app/Models/parserSkripte/Onenewspagegermany.php
@@ -0,0 +1,37 @@
+<?php
+
+namespace app\Models\parserSkripte;
+use App\Models\Searchengine;
+use App\Models\Result;
+
+class Onenewspagegermany extends Searchengine 
+{
+	public $results = [];
+
+	function __construct (\SimpleXMLElement $engine, $mh, $query, $time, $ip, $url)
+	{
+		parent::__construct($engine, $mh, $query, $time, $ip, $url);
+	}
+
+	public function loadResults ()
+	{
+		$result = curl_multi_getcontent($this->ch);
+		foreach( explode("\n", $result) as $line )
+		{
+			$line = trim($line);
+			if( strlen($line) > 0 ){
+				# Hier bekommen wir jedes einzelne Ergebnis
+				$result = explode("|", $line);
+				$this->results[] = new Result(
+					trim(strip_tags($result[0])),
+					$result[2],
+					$result[2],
+					$result[1],
+					"<a href=\"http://www.newsdeutschland.com/videos.htm\">newsdeutschland.com</a>"
+					);
+			}
+			
+		}
+
+	}
+}
\ No newline at end of file
diff --git a/app/Models/parserSkripte/OvertureAds.php b/app/Models/parserSkripte/OvertureAds.php
new file mode 100644
index 0000000000000000000000000000000000000000..adc3936da4a8b7b483827f1a82cda074e5a20414
--- /dev/null
+++ b/app/Models/parserSkripte/OvertureAds.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace App\Models\parserSkripte;
+
+use App\Models\Searchengine;
+
+class OvertureAds extends Searchengine
+{
+
+	function __construct (\SimpleXMLElement $engine, $mh, \App\MetaGer $metager)
+	{
+		parent::__construct($engine, $mh, $metager);
+	}
+
+	public function loadResults ()
+	{
+		$result = utf8_encode(curl_multi_getcontent($this->ch));
+		#die($result);
+	}
+
+}
\ No newline at end of file
diff --git a/app/Models/parserSkripte/Qualigo.php b/app/Models/parserSkripte/Qualigo.php
new file mode 100644
index 0000000000000000000000000000000000000000..cbdf8d203a6236e53f450ed915ab03db65e907d6
--- /dev/null
+++ b/app/Models/parserSkripte/Qualigo.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace App\Models\parserSkripte;
+
+use App\Models\Searchengine;
+
+class Qualigo extends Searchengine
+{
+
+	function __construct (\SimpleXMLElement $engine, $mh, \App\MetaGer $metager)
+	{
+		parent::__construct($engine, $mh, $metager);
+	}
+
+	public function loadResults ()
+	{
+		$result = utf8_encode(curl_multi_getcontent($this->ch));
+	}
+
+}
\ No newline at end of file
diff --git a/app/Models/parserSkripte/Similar_product_ads.php b/app/Models/parserSkripte/Similar_product_ads.php
new file mode 100644
index 0000000000000000000000000000000000000000..2c2e3f2b56b3df040b9b2cb44d5fad70cf7f04fb
--- /dev/null
+++ b/app/Models/parserSkripte/Similar_product_ads.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace App\Models\parserSkripte;
+
+use App\Models\Searchengine;
+
+class Similar_product_ads extends Searchengine
+{
+
+	function __construct (\SimpleXMLElement $engine, $mh, \App\MetaGer $metager)
+	{
+		parent::__construct($engine, $mh, $metager);
+		$tmp = $metager->getEingabe();
+		$tmp = preg_replace("/\W/si", "", $tmp);
+		if(strlen($tmp) < 3)
+		{
+			$this->removeCurlHandle($mh);
+		}
+	}
+
+	public function loadResults ()
+	{
+		$result = utf8_encode(curl_multi_getcontent($this->ch));
+	}
+
+}
\ No newline at end of file
diff --git a/app/Providers/MetaGerProvider.php b/app/Providers/MetaGerProvider.php
new file mode 100644
index 0000000000000000000000000000000000000000..906cf6a13eb5ff434d11634a22f72a765099b9fd
--- /dev/null
+++ b/app/Providers/MetaGerProvider.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace App\Providers;
+
+use Illuminate\Support\ServiceProvider;
+use App\MetaGer;
+
+class MetaGerProvider extends ServiceProvider
+{
+    /**
+     * Bootstrap the application services.
+     *
+     * @return void
+     */
+    public function boot()
+    {
+        //
+    }
+
+    /**
+     * Register the application services.
+     *
+     * @return void
+     */
+    public function register()
+    {
+        $this->app->singleton(MetaGer::class, function($app) {
+            return new MetaGer();
+        });
+    }
+
+}
diff --git a/app/Redis.php b/app/Redis.php
deleted file mode 100644
index c6a4b7159047e71873e166df647ba9b0dc885b87..0000000000000000000000000000000000000000
--- a/app/Redis.php
+++ /dev/null
@@ -1,371 +0,0 @@
-<?php
-namespace App;
-/**
- * Very simple Redis implementation, all commands passed in cli format
- * Add commands via cmd ( $command [, $variable1 [, $variable2 ] ] ) method
- * Fire commands via get () o set () methods ( first one will return output, usefull for get operations )
- *
- * Usage:
- * $redis = new redis_cli ( '127.0.0.1', 6379 );
- * $redis -> cmd ( 'SET', 'foo', 'bar' ) -> set ();
- * $foo = $redis -> cmd ( 'GET', 'foo' ) -> get ();
- *
- * $redis -> cmd ( 'HSET', 'hash', 'foo', 'bar' ) -> cmd ( 'HSET', 'hash', 'abc', 'def' ) -> set ();
- * $vals = $redis -> cmd ( 'HVALS', 'hash' ) -> get ();
- *
- * $redis -> cmd ( 'KEYS', 'online*' );
- * $total_online = $redis -> get_len ();
- *
- * Based on http://redis.io/topics/protocol
- */
-class Redis
-{
-    const INTEGER = ':';
-    const INLINE = '+';
-    const BULK = '$';
-    const MULTIBULK = '*';
-    const ERROR = '-';
-    const NL = "\r\n";
-
-    private $handle = false;
-    private $host;
-    private $port;
-    private $silent_fail;
-
-    private $commands = array ();
-
-    //Timeout for stream, 30 seconds
-    private $timeout = 30;
-
-    //Timeout for socket connection
-    private $connect_timeout = 3;
-
-    //Use this with extreme caution
-    private $force_reconnect = false;
-
-    //Error handling, debug info
-    private $last_used_command = '';
-
-    //Error handling function, use set_error_function method ()
-    private $error_function = null;
-
-    public function __construct ( $host = false, $port = false, $silent_fail = false, $timeout = 60 )
-    {
-        if ( $host && $port )
-        {
-            $this -> connect ( $host, $port, $silent_fail, $timeout );
-        }
-    }
-
-    //Main method to establish connection
-    public function connect ( $host = '127.0.0.1', $port = 6379, $silent_fail = false, $timeout = 60 )
-    {
-        $this -> host = $host;
-        $this -> port = $port;
-        $this -> silent_fail = $silent_fail;
-        $this -> timeout = $timeout;
-
-        if ( $silent_fail )
-        {
-            $this -> handle = @fsockopen ( $host, $port, $errno, $errstr, $this -> connect_timeout );
-
-            if ( !$this ->  handle )
-            {
-                $this -> handle = false;
-            }
-        }
-        else
-        {
-            $this -> handle = fsockopen ( $host, $port, $errno, $errstr, $this -> connect_timeout );
-        }
-
-        if ( is_resource ( $this -> handle ) )
-        {
-            stream_set_timeout ( $this -> handle, $this -> timeout );
-        }
-    }
-
-    public function reconnect (  )
-    {
-        $this -> __destruct ();
-        $this -> connect ( $this -> host, $this -> port, $this -> silent_fail );
-    }
-
-    public function __destruct ()
-    {
-        if ( is_resource ( $this -> handle ) )
-        {
-            fclose ( $this -> handle );
-        }
-    }
-
-    //Returns all commands array
-    public function commands ()
-    {
-        return $this -> commands;
-    }
-
-    //Used to push single command to queue
-    public function cmd ()
-    {
-        if ( !$this -> handle )
-        {
-            return $this;
-        }
-
-        $args = func_get_args ();
-        $rlen = count ( $args );
-
-        $output = '*'. $rlen . self::NL;
-
-        foreach ( $args as $arg )
-        {
-            $output .= '$'. strlen ( $arg ) . self::NL . $arg . self::NL;
-        }
-
-        $this -> commands [] = $output;
-
-        return $this;
-    }
-
-    //Used to push many commands at once, almost always for setting something
-    public function set ()
-    {
-        if ( !$this -> handle )
-        {
-            return false;
-        }
-
-        //Total size of commands
-        $size = $this -> exec ();
-        $response = array ();
-
-        for ( $i=0; $i<$size; $i++ )
-        {
-            $response [] = $this -> get_response ();
-        }
-
-        if ( $this -> force_reconnect )
-        {
-            $this -> reconnect ();
-        }
-
-        return $response;
-    }
-
-    //Used to get command response
-    public function get ( $line = false )
-    {
-        if ( !$this -> handle )
-        {
-            return false;
-        }
-
-        $return = false;
-
-        if ( $this -> exec () )
-        {
-            $return = $this -> get_response ();
-
-            if ( $this -> force_reconnect )
-            {
-                $this -> reconnect ();
-            }
-
-        }
-
-        return $return;
-    }
-
-    //Used to get length of the returned array. Most useful with `Keys` command
-    public function get_len ()
-    {
-        if ( !$this -> handle )
-        {
-            return false;
-        }
-
-        $return = null;
-
-        if ( $this -> exec () )
-        {
-            $char = fgetc ( $this -> handle );
-
-            if ( $char == self::BULK )
-            {
-                $return = sizeof ( $this -> bulk_response () );
-            }
-            elseif ( $char == self::MULTIBULK )
-            {
-                $return = sizeof ( $this -> multibulk_response () );
-            }
-
-            if ( $this -> force_reconnect )
-            {
-                $this -> reconnect ();
-            }
-        }
-
-        return $return;
-    }
-
-    //Forces to reconnect after every get() or set(). Use this with extreme caution
-    public function set_force_reconnect ( $flag )
-    {
-        $this -> force_reconnect = $flag;
-        return $this;
-    }
-
-    //Used to parse single command single response
-    private function get_response ()
-    {
-        $return = false;
-
-        $char = fgetc ( $this -> handle );
-
-        switch ( $char )
-        {
-            case self::INLINE:
-                $return = $this -> inline_response ();
-                break;
-            case self::INTEGER:
-                $return = $this -> integer_response ();
-                break;
-            case self::BULK:
-                $return = $this -> bulk_response ();
-                break;
-            case self::MULTIBULK:
-                $return = $this -> multibulk_response ();
-                break;
-            case self::ERROR:
-                $return = $this -> error_response ();
-                break;
-        }
-
-        return $return;
-    }
-
-    //For inline responses only
-    private function inline_response ()
-    {
-        return trim ( fgets ( $this -> handle ) );
-    }
-
-    //For integer responses only
-    private function integer_response ()
-    {
-        return ( int ) trim ( fgets ( $this -> handle ) );
-    }
-
-    //For error responses only
-    private function error_response ()
-    {
-        $error = fgets ( $this -> handle );
-
-        if ( $this -> error_function )
-        {
-            call_user_func ( $this -> error_function, $error .'('. $this -> last_used_command .')' );
-        }
-
-        return false;
-    }
-
-    //For bulk responses only
-    private function bulk_response ()
-    {
-        $return = trim ( fgets ( $this -> handle ) );
-
-        if ( $return === '-1' )
-        {
-            $return = null;
-        }
-        else
-        {
-            $return = $this -> read_bulk_response ( $return );
-        }
-
-        return $return;
-    }
-
-    //For multibulk responses only
-    private function multibulk_response ()
-    {
-        $size = trim ( fgets ( $this -> handle ) );
-        $return = false;
-
-        if ( $size === '-1' )
-        {
-            $return = null;
-        }
-        else
-        {
-            $return = array ();
-
-            for ( $i = 0; $i < $size; $i++ )
-            {
-                $tmp = trim ( fgets ( $this -> handle ) );
-
-                if ( $tmp === '-1' )
-                {
-                    $return [] = null;
-                }
-                else
-                {
-                    $return [] = $this -> read_bulk_response ( $tmp );
-                }
-            }
-        }
-
-        return $return;
-    }
-
-    //Sends command to the redis
-    private function exec ()
-    {
-        $size = sizeof ( $this -> commands );
-
-        if ( $size < 1 )
-        {
-            return null;
-        }
-
-        if ( $this -> error_function )
-        {
-            $this -> last_used_command = str_replace ( self::NL, '\\r\\n', implode ( ';', $this -> commands ) );
-        }
-
-        $command = implode ( self::NL, $this -> commands ) . self::NL;
-        fwrite ( $this -> handle, $command );
-
-        $this -> commands = array ();
-        return $size;
-    }
-
-    //Bulk response reader
-    private function read_bulk_response ( $tmp )
-    {
-        $response = null;
-
-        $read = 0;
-        $size = ( ( strlen ( $tmp ) > 1 && substr ( $tmp, 0, 1 ) === self::BULK ) ? substr ( $tmp, 1 ) : $tmp );
-
-        while ( $read < $size )
-        {
-            $diff = $size - $read;
-
-            $block_size = $diff > 8192 ? 8192 : $diff;
-
-            $response .= fread ( $this -> handle, $block_size );
-            $read += $block_size;
-        }
-
-        fgets ( $this -> handle );
-
-        return $response;
-    }
-
-    public function set_error_function ( $func )
-    {
-        $this -> error_function = $func;
-    }
-}
diff --git a/composer.json b/composer.json
index e28012140e3b96dce66d14c59e10eaa1c13545ca..272eb3492c4da549e488ed3d56336aaa5b204601 100644
--- a/composer.json
+++ b/composer.json
@@ -8,7 +8,8 @@
         "php": ">=5.5.9",
         "laravel/framework": "5.2.*",
         "mcamara/laravel-localization": "^1.1",
-        "guzzlehttp/guzzle": "^6.2"
+        "guzzlehttp/guzzle": "^6.2",
+        "jenssegers/agent": "^2.3"
     },
     "require-dev": {
         "fzaninotto/faker": "~1.4",
diff --git a/composer.lock b/composer.lock
index 24e6e9209d17cebdbd7a4feae6d1f37731e3c212..9d9d1e86136fbf89189e776b7d41f0c0a207dbc7 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,8 +4,8 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
         "This file is @generated automatically"
     ],
-    "hash": "78c5a9e749a72f3904e42c8e327605d9",
-    "content-hash": "0c9fdb698d482f8c9df582568e514b26",
+    "hash": "ac43207ede0f63c9fafc0f63d04346ae",
+    "content-hash": "db9cfe1e3caebe3afb5890033afb9452",
     "packages": [
         {
             "name": "classpreloader/classpreloader",
@@ -225,16 +225,16 @@
         },
         {
             "name": "guzzlehttp/promises",
-            "version": "1.1.0",
+            "version": "1.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/promises.git",
-                "reference": "bb9024c526b22f3fe6ae55a561fd70653d470aa8"
+                "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/promises/zipball/bb9024c526b22f3fe6ae55a561fd70653d470aa8",
-                "reference": "bb9024c526b22f3fe6ae55a561fd70653d470aa8",
+                "url": "https://api.github.com/repos/guzzle/promises/zipball/c10d860e2a9595f8883527fa0021c7da9e65f579",
+                "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579",
                 "shasum": ""
             },
             "require": {
@@ -272,7 +272,7 @@
             "keywords": [
                 "promise"
             ],
-            "time": "2016-03-08 01:15:46"
+            "time": "2016-05-18 16:56:05"
         },
         {
             "name": "guzzlehttp/psr7",
@@ -419,6 +419,63 @@
             ],
             "time": "2015-04-20 18:58:01"
         },
+        {
+            "name": "jenssegers/agent",
+            "version": "v2.3.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/jenssegers/agent.git",
+                "reference": "3068d6372a4677af84014a53d5a212cfa74492c1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/jenssegers/agent/zipball/3068d6372a4677af84014a53d5a212cfa74492c1",
+                "reference": "3068d6372a4677af84014a53d5a212cfa74492c1",
+                "shasum": ""
+            },
+            "require": {
+                "illuminate/support": "^4.0|^5.0",
+                "mobiledetect/mobiledetectlib": "^2.7.6",
+                "php": ">=5.3.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.0|^5.0",
+                "satooshi/php-coveralls": "^0.6"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Jenssegers\\Agent\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jens Segers",
+                    "homepage": "https://jenssegers.com"
+                }
+            ],
+            "description": "A PHP desktop/mobile user agent parser with support for Laravel, based on Mobiledetect",
+            "homepage": "https://github.com/jenssegers/agent",
+            "keywords": [
+                "Agent",
+                "browser",
+                "laravel",
+                "mobile",
+                "platform",
+                "user agent",
+                "useragent"
+            ],
+            "time": "2016-03-08 13:47:22"
+        },
         {
             "name": "jeremeamia/SuperClosure",
             "version": "2.2.0",
@@ -479,16 +536,16 @@
         },
         {
             "name": "laravel/framework",
-            "version": "v5.2.31",
+            "version": "v5.2.32",
             "source": {
                 "type": "git",
                 "url": "https://github.com/laravel/framework.git",
-                "reference": "2fa2797604bf54b06faf7bb139a9fc0d66826fea"
+                "reference": "f688217113f70b01d0e127da9035195415812bef"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/laravel/framework/zipball/2fa2797604bf54b06faf7bb139a9fc0d66826fea",
-                "reference": "2fa2797604bf54b06faf7bb139a9fc0d66826fea",
+                "url": "https://api.github.com/repos/laravel/framework/zipball/f688217113f70b01d0e127da9035195415812bef",
+                "reference": "f688217113f70b01d0e127da9035195415812bef",
                 "shasum": ""
             },
             "require": {
@@ -604,7 +661,7 @@
                 "framework",
                 "laravel"
             ],
-            "time": "2016-04-27 13:02:09"
+            "time": "2016-05-17 13:24:40"
         },
         {
             "name": "league/flysystem",
@@ -737,6 +794,60 @@
             ],
             "time": "2016-01-08 07:14:49"
         },
+        {
+            "name": "mobiledetect/mobiledetectlib",
+            "version": "2.8.22",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/serbanghita/Mobile-Detect.git",
+                "reference": "53cddae0c272a478b24a4b5fb60d0f838caf70b6"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/53cddae0c272a478b24a4b5fb60d0f838caf70b6",
+                "reference": "53cddae0c272a478b24a4b5fb60d0f838caf70b6",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.0.0"
+            },
+            "require-dev": {
+                "codeclimate/php-test-reporter": "dev-master",
+                "johnkary/phpunit-speedtrap": "~1.0@dev",
+                "phpunit/phpunit": "*"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "Mobile_Detect.php"
+                ],
+                "psr-0": {
+                    "Detection": "namespaced/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Serban Ghita",
+                    "email": "serbanghita@gmail.com",
+                    "homepage": "http://mobiledetect.net",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices. It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.",
+            "homepage": "https://github.com/serbanghita/Mobile-Detect",
+            "keywords": [
+                "detect mobile devices",
+                "mobile",
+                "mobile detect",
+                "mobile detector",
+                "php mobile detect"
+            ],
+            "time": "2016-04-24 09:47:16"
+        },
         {
             "name": "monolog/monolog",
             "version": "1.19.0",
@@ -1580,16 +1691,16 @@
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.1.1",
+            "version": "v1.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "1289d16209491b584839022f29257ad859b8532d"
+                "reference": "dff51f72b0706335131b00a7f49606168c582594"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/1289d16209491b584839022f29257ad859b8532d",
-                "reference": "1289d16209491b584839022f29257ad859b8532d",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/dff51f72b0706335131b00a7f49606168c582594",
+                "reference": "dff51f72b0706335131b00a7f49606168c582594",
                 "shasum": ""
             },
             "require": {
@@ -1601,7 +1712,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.1-dev"
+                    "dev-master": "1.2-dev"
                 }
             },
             "autoload": {
@@ -1635,20 +1746,20 @@
                 "portable",
                 "shim"
             ],
-            "time": "2016-01-20 09:13:37"
+            "time": "2016-05-18 14:26:46"
         },
         {
             "name": "symfony/polyfill-php56",
-            "version": "v1.1.1",
+            "version": "v1.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-php56.git",
-                "reference": "4d891fff050101a53a4caabb03277284942d1ad9"
+                "reference": "3edf57a8fbf9a927533344cef65ad7e1cf31030a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/4d891fff050101a53a4caabb03277284942d1ad9",
-                "reference": "4d891fff050101a53a4caabb03277284942d1ad9",
+                "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/3edf57a8fbf9a927533344cef65ad7e1cf31030a",
+                "reference": "3edf57a8fbf9a927533344cef65ad7e1cf31030a",
                 "shasum": ""
             },
             "require": {
@@ -1658,7 +1769,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.1-dev"
+                    "dev-master": "1.2-dev"
                 }
             },
             "autoload": {
@@ -1691,20 +1802,20 @@
                 "portable",
                 "shim"
             ],
-            "time": "2016-01-20 09:13:37"
+            "time": "2016-05-18 14:26:46"
         },
         {
             "name": "symfony/polyfill-util",
-            "version": "v1.1.1",
+            "version": "v1.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-util.git",
-                "reference": "8de62801aa12bc4dfcf85eef5d21981ae7bb3cc4"
+                "reference": "ef830ce3d218e622b221d6bfad42c751d974bf99"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/8de62801aa12bc4dfcf85eef5d21981ae7bb3cc4",
-                "reference": "8de62801aa12bc4dfcf85eef5d21981ae7bb3cc4",
+                "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/ef830ce3d218e622b221d6bfad42c751d974bf99",
+                "reference": "ef830ce3d218e622b221d6bfad42c751d974bf99",
                 "shasum": ""
             },
             "require": {
@@ -1713,7 +1824,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.1-dev"
+                    "dev-master": "1.2-dev"
                 }
             },
             "autoload": {
@@ -1743,7 +1854,7 @@
                 "polyfill",
                 "shim"
             ],
-            "time": "2016-01-20 09:13:37"
+            "time": "2016-05-18 14:26:46"
         },
         {
             "name": "symfony/process",
@@ -2197,16 +2308,16 @@
         },
         {
             "name": "mockery/mockery",
-            "version": "0.9.4",
+            "version": "0.9.5",
             "source": {
                 "type": "git",
                 "url": "https://github.com/padraic/mockery.git",
-                "reference": "70bba85e4aabc9449626651f48b9018ede04f86b"
+                "reference": "4db079511a283e5aba1b3c2fb19037c645e70fc2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/padraic/mockery/zipball/70bba85e4aabc9449626651f48b9018ede04f86b",
-                "reference": "70bba85e4aabc9449626651f48b9018ede04f86b",
+                "url": "https://api.github.com/repos/padraic/mockery/zipball/4db079511a283e5aba1b3c2fb19037c645e70fc2",
+                "reference": "4db079511a283e5aba1b3c2fb19037c645e70fc2",
                 "shasum": ""
             },
             "require": {
@@ -2258,7 +2369,7 @@
                 "test double",
                 "testing"
             ],
-            "time": "2015-04-02 19:54:00"
+            "time": "2016-05-22 21:52:33"
         },
         {
             "name": "phpdocumentor/reflection-docblock",
@@ -2523,21 +2634,24 @@
         },
         {
             "name": "phpunit/php-timer",
-            "version": "1.0.7",
+            "version": "1.0.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-timer.git",
-                "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b"
+                "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
-                "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260",
+                "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.3"
             },
+            "require-dev": {
+                "phpunit/phpunit": "~4|~5"
+            },
             "type": "library",
             "autoload": {
                 "classmap": [
@@ -2560,7 +2674,7 @@
             "keywords": [
                 "timer"
             ],
-            "time": "2015-06-21 08:01:12"
+            "time": "2016-05-12 18:03:57"
         },
         {
             "name": "phpunit/php-token-stream",
@@ -2613,16 +2727,16 @@
         },
         {
             "name": "phpunit/phpunit",
-            "version": "4.8.24",
+            "version": "4.8.26",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "a1066c562c52900a142a0e2bbf0582994671385e"
+                "reference": "fc1d8cd5b5de11625979125c5639347896ac2c74"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1066c562c52900a142a0e2bbf0582994671385e",
-                "reference": "a1066c562c52900a142a0e2bbf0582994671385e",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fc1d8cd5b5de11625979125c5639347896ac2c74",
+                "reference": "fc1d8cd5b5de11625979125c5639347896ac2c74",
                 "shasum": ""
             },
             "require": {
@@ -2636,7 +2750,7 @@
                 "phpunit/php-code-coverage": "~2.1",
                 "phpunit/php-file-iterator": "~1.4",
                 "phpunit/php-text-template": "~1.2",
-                "phpunit/php-timer": ">=1.0.6",
+                "phpunit/php-timer": "^1.0.6",
                 "phpunit/phpunit-mock-objects": "~2.3",
                 "sebastian/comparator": "~1.1",
                 "sebastian/diff": "~1.2",
@@ -2681,7 +2795,7 @@
                 "testing",
                 "xunit"
             ],
-            "time": "2016-03-14 06:16:08"
+            "time": "2016-05-17 03:09:28"
         },
         {
             "name": "phpunit/phpunit-mock-objects",
@@ -2857,16 +2971,16 @@
         },
         {
             "name": "sebastian/environment",
-            "version": "1.3.6",
+            "version": "1.3.7",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/environment.git",
-                "reference": "2292b116f43c272ff4328083096114f84ea46a56"
+                "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/2292b116f43c272ff4328083096114f84ea46a56",
-                "reference": "2292b116f43c272ff4328083096114f84ea46a56",
+                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4e8f0da10ac5802913afc151413bc8c53b6c2716",
+                "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716",
                 "shasum": ""
             },
             "require": {
@@ -2903,7 +3017,7 @@
                 "environment",
                 "hhvm"
             ],
-            "time": "2016-05-04 07:59:13"
+            "time": "2016-05-17 03:18:57"
         },
         {
             "name": "sebastian/exporter",
diff --git a/config/.gitignore b/config/.gitignore
index 25e0c0488817ffc9f234c297d3a203918d465d90..08908afc5703f7db42f55aabbc041de8f2961956 100644
--- a/config/.gitignore
+++ b/config/.gitignore
@@ -1 +1,2 @@
-metager.ini
\ No newline at end of file
+*.xml
+*.txt
\ No newline at end of file
diff --git a/config/app.php b/config/app.php
index 9627e582b5ef27d46befe302a714e26e8d838067..22ac17845b905b4a2585aef2266f4f9bcb04509e 100644
--- a/config/app.php
+++ b/config/app.php
@@ -26,7 +26,7 @@ return [
     |
     */
 
-    'debug' => env('APP_DEBUG', false),
+    'debug' => env('APP_DEBUG', true),
 
     /*
     |--------------------------------------------------------------------------
@@ -156,6 +156,8 @@ return [
         App\Providers\EventServiceProvider::class,
         App\Providers\RouteServiceProvider::class,
         Mcamara\LaravelLocalization\LaravelLocalizationServiceProvider::class,
+        App\Providers\MetaGerProvider::class,
+        Jenssegers\Agent\AgentServiceProvider::class,
 
     ],
 
@@ -202,8 +204,8 @@ return [
         'URL' => Illuminate\Support\Facades\URL::class,
         'Validator' => Illuminate\Support\Facades\Validator::class,
         'View' => Illuminate\Support\Facades\View::class,
-        'LaravelLocalization'   => Mcamara\LaravelLocalization\Facades\LaravelLocalization::class,
-
+        'LaravelLocalization'   => Mcamara\LaravelLocalization\Facades\LaravelLocalization::class, 
+        'Agent' => Jenssegers\Agent\Facades\Agent::class,     
     ],
 
 ];
diff --git a/config/laravellocalization.php b/config/laravellocalization.php
index 04b96e28b127f7afe345a9b00c171aac6ee4396d..fed09e0f475351655e55056ae2022ab4a3f730d3 100644
--- a/config/laravellocalization.php
+++ b/config/laravellocalization.php
@@ -299,7 +299,7 @@ return [
 
 	// Negotiate for the user locale using the Accept-Language header if it's not defined in the URL?
 	// If false, system will take app.php locale attribute
-	'useAcceptLanguageHeader' => true,
+	'useAcceptLanguageHeader' => false,
 
 	// If LaravelLocalizationRedirectFilter is active and hideDefaultLocaleInURL
 	// is true, the url would not have the default application language
diff --git a/public/css/styleResultPage.css b/public/css/styleResultPage.css
new file mode 100644
index 0000000000000000000000000000000000000000..2cc1bf8b8e6bf40cce168d324615316cec1c766c
--- /dev/null
+++ b/public/css/styleResultPage.css
@@ -0,0 +1,466 @@
+*{
+	font-family: Liberation Sans, sans-serif;
+}
+
+.row {
+    margin: 10px 15px;
+    margin-top: 0;
+}
+
+header * {
+}
+
+#foki li {
+    /* background-color: rgba(255, 255, 255, 0.93); */
+    /* border-top-right-radius: 5px; */
+}
+
+.nav-tabs > li.active {
+}
+
+nav-tabs > li.active {
+    border-bottom: 0;
+}
+
+.tab-pane.active {
+	/* -webkit-box-shadow: 5px 5px 10px 0px rgba(0,0,0,0.55); */
+		-moz-box-shadow: 5px 5px 10px 0px rgba(0,0,0,0.55);
+		
+	/* box-shadow: 5px 5px 10px 0px rgba(0,0,0,0.55); */	
+	padding: 10px 0;
+	padding-top: 0;
+}
+
+/* Hier der Style für unsere Suchleiste */
+	#researchBar
+	{
+		
+	}
+	.alert{
+	
+    margin: 10px 0;
+    padding: 5px 15px;
+}
+	.alert ul{
+		list-style-type:none;
+	
+		padding-left: 49px;
+}
+	/* Logo */
+	.logo
+	{
+    height: 35px;
+	
+    padding: 5px 0;
+}
+	.logo > a
+	{
+    line-height: 100%;
+	
+    height: 100%;
+    display: block;
+}
+#research *{
+}
+
+#research ul.list-inline {
+    margin-left: 0;
+    width: 100%;
+}
+
+@media (max-width: 767px){
+	#research .visible-xs {
+		display: inline-block!important;
+	}
+	#research nav ul li + li + li{
+	}
+}
+
+.input-group-addon {
+    padding: 0;
+}
+
+input#eingabeTop {
+    height: 35px;
+}
+
+nav .input-group {
+    height: 35px;
+    padding: 5px 0;
+}
+
+header nav {
+    height: 100%;
+    /* margin-left: 15px; */
+}
+
+header ul {
+    height: 100%;
+    vertical-align: middle;
+}
+
+#research nav ul > li {
+    width: 20%;
+    height: 45px;
+    vertical-align: middle;
+    padding-left: 15px;
+    padding-right: 15px;
+}
+
+#research nav ul > li.visible-xs {
+    width: 10%;
+    padding-left: 15px;
+    padding-right: 15px;
+}
+
+#research nav ul li + li + li {
+    width: 80%;
+}
+
+#research {
+    background-color: white;
+    position: fixed;
+    top: 0;
+    width: 100%;
+    height: 45px;
+    z-index: 500;
+		
+		
+    width: 80%;
+    left: 50%;
+    margin-left: -40%;
+}
+	.logo h1
+	{
+		font-family: Liberation Sans, sans-serif;
+		font-style: italic;
+		margin: 0;
+		font-weight: bold;
+		line-height:1;
+		white-space:nowrap;
+	
+		/* padding: 5px 0; */
+}
+	#search
+	{
+		background-color: inherit;
+		border:0;
+	
+		width: 50px;
+		height: 100%;
+}
+	#reSearch
+	{
+	
+}
+	#reSearch a
+	{
+		color: black;
+	}	
+.content-wrapper
+	{
+		width: 80%;
+		margin: 0 auto;
+		padding-top: 60px;
+		/* padding: 10px; */
+	
+		background-color: white;        
+		-webkit-box-shadow: 1px 1px 3px 1px rgba(0,0,0,0.3); -moz-box-shadow: 1px 1px 3px 1px rgba(0,0,0,0.3); box-shadow: 1px 1px 3px 1px rgba(0,0,0,0.3);
+}
+	#helpButton
+	{
+		color:black;
+	}
+body
+{
+    height: 100%;
+    background-image: inherit;
+    /* background-attachment: fixed; */
+    background-color: rgba(2,93,140,.03);
+}
+a:link
+{
+	color:#0000FF;
+}
+
+a#donation:hover {}
+
+a#donation,a#donation:visited {
+    color: inherit;
+}
+
+a#donation:hover {
+    color: red;
+}
+a:visited
+{
+	color: #7676FF;
+}
+a:hover
+{
+	text-decoration:none;
+	color:red;	
+}
+/* Hier der Style für unsere Tabliste */
+#foki{
+    background-color: white;
+}
+#foki a{
+	color: grey;
+}
+#foki li.active a{
+	color: black;
+	background-color: white;
+}
+#foki li.active span + span{
+	display:inline!important;
+}
+
+/* Hier der Style für unseren Spruch */
+#spruch
+{
+	padding: 10px;
+	/* margin-top: 10px; */
+	margin-bottom: 0;
+	padding-bottom: 10px;
+	padding-left: 65px;
+	color:green;
+	font-weight:bold;
+}
+#spenden{
+	white-space:nowrap;
+	overflow:hidden;
+	text-overflow:ellipsis;
+}
+#spruch .author{
+	font-size:80%;
+	font-weight:normal;
+	font-style:italic;
+	color:#333333;
+}
+#spruch > p
+{
+	margin-bottom:0;
+}
+#spruch > p + p
+{
+	margin-top:4px;	
+}
+
+/* Hier der Style für die einzelnen Ergebnisboxen */
+.result
+{
+	margin-bottom:20px;
+	/* padding:0 50px; */
+	width:100%
+}
+.result > .number
+{
+	float: left;
+	font-size: 15px;
+	line-height:1;	
+}
+
+.result > .resultInformation
+{
+	margin-left: 40px;
+  	padding-left: 10px;
+  	border-radius: 5px;
+}
+.result .title
+{
+	color: black;
+	text-decoration: none;
+	font-size: 15px;
+	font-weight: bold;
+	margin-bottom:0;
+	white-space:nowrap;
+	line-height:1.1;
+	max-width:115ch;
+	overflow:hidden;
+	text-overflow:ellipsis;
+}
+
+.result.ad .title {
+    color: green;
+}
+.result .link
+{
+	font-size: 13px;
+	margin: 0;
+	line-height:1.5;
+}
+.result .link-link{
+	white-space:nowrap;
+	max-width:60%;
+	overflow:hidden;
+	text-overflow:ellipsis;
+	float:left;
+}
+.result:not(.ad) .link > div{
+	white-space:nowrap;
+}
+.result:not(.ad) .link > span{
+	white-space:nowrap;
+}
+.result:not(.ad) .link  .options{
+	color: #333;
+	float:left;
+}
+.result:not(.ad) .link:hover{
+	cursor:pointer;
+}
+.result:not(.ad) .link  .options > a{
+	color: #333;
+	display:block;
+	padding-left:5px;
+	padding-right:10px;
+}
+.result:not(.ad) .link  .options > a > span{
+	font-size:10px;
+}
+.result .description
+{
+	margin-bottom: 3px;
+	color: black;
+	font-size: 14px;
+	white-space:pre-wrap;
+	line-height: 1.3;
+	clear: both;
+}
+
+.result.ad .description {
+    color: green;
+    max-width: 115ch;   overflow: hidden;   text-overflow: ellipsis;   white-space: nowrap;
+}
+.result:not(.ad) .hoster
+{
+	font-size: 13px;
+	margin: 0;
+	color:#777;
+	margin-right:10px;
+	white-space:nowrap;
+}
+.result:not(.ad) .hoster a{
+	color:#333;
+}
+.result .result-image > img{
+	height:100px;
+	padding:10px;
+}
+.result .proxy{
+	font-size:13px;
+	margin-top:0;
+	white-space:nowrap;
+}
+.result .partnershop-info{
+	font-size:13px;
+	margin-top:0;
+	margin-left:10px;
+}
+.result .proxy img{
+	margin-bottom:0px;
+	margin-right:2px
+}
+
+.popover-content{
+	/*padding-left: 0;
+	padding-right:0;*/
+}
+
+.options-list > li{
+}
+
+.options-list > li:hover{
+	background-color:lightgrey;
+}
+
+.options-list > li > a{
+	color: #333;
+	white-space:nowrap;
+	display:block;
+	padding:5px 14px;
+}
+
+.options-list > li input[type=submit]{
+	width:100%;
+	background-color:transparent;
+	border:0;
+	margin:5px 0;
+}
+
+.container-fluid {
+	padding-top: 15px;
+	padding-bottom: 15px;
+	background-color: white;
+}
+#quicktips iframe{
+	width:100%;
+	height: 1000px;
+	background-color: transparent;
+    border: 0px none transparent;
+    padding: 0px;
+    overflow: hidden;
+}
+/* Hier der Style für die Bilder */
+#fit-width .masonry {
+	margin: 0 auto;
+}
+.item{
+	width: 150px;
+	text-align:center;
+	margin-bottom:10px;
+}
+#container{
+	margin: 10px auto;
+}
+
+/* Hier der Style für die Werbeboxen */
+.result.ad{
+}
+.result.ad .link a{
+}
+.result.ad .description{
+}
+.result.ad .hoster{
+	color:green;
+}
+/* Style für den Footer */
+.footer{
+	padding: 15px 0;
+	margin-top:50px;
+	margin-bottom: 0;
+}
+.footer a{
+	color:black;
+}
+.footer li{
+	width:49%;
+	padding:0;
+	margin:0;
+	text-align:center;
+}
+.footer .left{
+	text-align:right;
+	padding-right:20px;
+}
+.footer .right{
+	text-align:left;
+	padding-left:20px;
+}
+/* Ein resetter für Floats */
+.clearfix{
+	clear:both;
+}
+/* Placeholder für ladende Tabs */
+.loader{
+	text-align:center;
+	margin-top:20px;
+}
+.loader > img{
+	width:30px;
+}
+
+.pager{
+	text-align:center;
+}
\ No newline at end of file
diff --git a/public/img/ajax-loader.gif b/public/img/ajax-loader.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8f0ac7f68e85cf44f5db95172c2b3d4db4ef5250
Binary files /dev/null and b/public/img/ajax-loader.gif differ
diff --git a/public/img/proxyicon.png b/public/img/proxyicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..79eedcebc3fa2a67d46d2c4cf5352a0974823258
Binary files /dev/null and b/public/img/proxyicon.png differ
diff --git a/public/js/imagesloaded.js b/public/js/imagesloaded.js
new file mode 100644
index 0000000000000000000000000000000000000000..d66f658937d8f5b6d96f969aa3ac5c421c397338
--- /dev/null
+++ b/public/js/imagesloaded.js
@@ -0,0 +1,7 @@
+/*!
+ * imagesLoaded PACKAGED v3.1.8
+ * JavaScript is all like "You images are done yet or what?"
+ * MIT License
+ */
+
+(function(){function e(){}function t(e,t){for(var n=e.length;n--;)if(e[n].listener===t)return n;return-1}function n(e){return function(){return this[e].apply(this,arguments)}}var i=e.prototype,r=this,o=r.EventEmitter;i.getListeners=function(e){var t,n,i=this._getEvents();if("object"==typeof e){t={};for(n in i)i.hasOwnProperty(n)&&e.test(n)&&(t[n]=i[n])}else t=i[e]||(i[e]=[]);return t},i.flattenListeners=function(e){var t,n=[];for(t=0;e.length>t;t+=1)n.push(e[t].listener);return n},i.getListenersAsObject=function(e){var t,n=this.getListeners(e);return n instanceof Array&&(t={},t[e]=n),t||n},i.addListener=function(e,n){var i,r=this.getListenersAsObject(e),o="object"==typeof n;for(i in r)r.hasOwnProperty(i)&&-1===t(r[i],n)&&r[i].push(o?n:{listener:n,once:!1});return this},i.on=n("addListener"),i.addOnceListener=function(e,t){return this.addListener(e,{listener:t,once:!0})},i.once=n("addOnceListener"),i.defineEvent=function(e){return this.getListeners(e),this},i.defineEvents=function(e){for(var t=0;e.length>t;t+=1)this.defineEvent(e[t]);return this},i.removeListener=function(e,n){var i,r,o=this.getListenersAsObject(e);for(r in o)o.hasOwnProperty(r)&&(i=t(o[r],n),-1!==i&&o[r].splice(i,1));return this},i.off=n("removeListener"),i.addListeners=function(e,t){return this.manipulateListeners(!1,e,t)},i.removeListeners=function(e,t){return this.manipulateListeners(!0,e,t)},i.manipulateListeners=function(e,t,n){var i,r,o=e?this.removeListener:this.addListener,s=e?this.removeListeners:this.addListeners;if("object"!=typeof t||t instanceof RegExp)for(i=n.length;i--;)o.call(this,t,n[i]);else for(i in t)t.hasOwnProperty(i)&&(r=t[i])&&("function"==typeof r?o.call(this,i,r):s.call(this,i,r));return this},i.removeEvent=function(e){var t,n=typeof e,i=this._getEvents();if("string"===n)delete i[e];else if("object"===n)for(t in i)i.hasOwnProperty(t)&&e.test(t)&&delete i[t];else delete this._events;return this},i.removeAllListeners=n("removeEvent"),i.emitEvent=function(e,t){var n,i,r,o,s=this.getListenersAsObject(e);for(r in s)if(s.hasOwnProperty(r))for(i=s[r].length;i--;)n=s[r][i],n.once===!0&&this.removeListener(e,n.listener),o=n.listener.apply(this,t||[]),o===this._getOnceReturnValue()&&this.removeListener(e,n.listener);return this},i.trigger=n("emitEvent"),i.emit=function(e){var t=Array.prototype.slice.call(arguments,1);return this.emitEvent(e,t)},i.setOnceReturnValue=function(e){return this._onceReturnValue=e,this},i._getOnceReturnValue=function(){return this.hasOwnProperty("_onceReturnValue")?this._onceReturnValue:!0},i._getEvents=function(){return this._events||(this._events={})},e.noConflict=function(){return r.EventEmitter=o,e},"function"==typeof define&&define.amd?define("eventEmitter/EventEmitter",[],function(){return e}):"object"==typeof module&&module.exports?module.exports=e:this.EventEmitter=e}).call(this),function(e){function t(t){var n=e.event;return n.target=n.target||n.srcElement||t,n}var n=document.documentElement,i=function(){};n.addEventListener?i=function(e,t,n){e.addEventListener(t,n,!1)}:n.attachEvent&&(i=function(e,n,i){e[n+i]=i.handleEvent?function(){var n=t(e);i.handleEvent.call(i,n)}:function(){var n=t(e);i.call(e,n)},e.attachEvent("on"+n,e[n+i])});var r=function(){};n.removeEventListener?r=function(e,t,n){e.removeEventListener(t,n,!1)}:n.detachEvent&&(r=function(e,t,n){e.detachEvent("on"+t,e[t+n]);try{delete e[t+n]}catch(i){e[t+n]=void 0}});var o={bind:i,unbind:r};"function"==typeof define&&define.amd?define("eventie/eventie",o):e.eventie=o}(this),function(e,t){"function"==typeof define&&define.amd?define(["eventEmitter/EventEmitter","eventie/eventie"],function(n,i){return t(e,n,i)}):"object"==typeof exports?module.exports=t(e,require("wolfy87-eventemitter"),require("eventie")):e.imagesLoaded=t(e,e.EventEmitter,e.eventie)}(window,function(e,t,n){function i(e,t){for(var n in t)e[n]=t[n];return e}function r(e){return"[object Array]"===d.call(e)}function o(e){var t=[];if(r(e))t=e;else if("number"==typeof e.length)for(var n=0,i=e.length;i>n;n++)t.push(e[n]);else t.push(e);return t}function s(e,t,n){if(!(this instanceof s))return new s(e,t);"string"==typeof e&&(e=document.querySelectorAll(e)),this.elements=o(e),this.options=i({},this.options),"function"==typeof t?n=t:i(this.options,t),n&&this.on("always",n),this.getImages(),a&&(this.jqDeferred=new a.Deferred);var r=this;setTimeout(function(){r.check()})}function f(e){this.img=e}function c(e){this.src=e,v[e]=this}var a=e.jQuery,u=e.console,h=u!==void 0,d=Object.prototype.toString;s.prototype=new t,s.prototype.options={},s.prototype.getImages=function(){this.images=[];for(var e=0,t=this.elements.length;t>e;e++){var n=this.elements[e];"IMG"===n.nodeName&&this.addImage(n);var i=n.nodeType;if(i&&(1===i||9===i||11===i))for(var r=n.querySelectorAll("img"),o=0,s=r.length;s>o;o++){var f=r[o];this.addImage(f)}}},s.prototype.addImage=function(e){var t=new f(e);this.images.push(t)},s.prototype.check=function(){function e(e,r){return t.options.debug&&h&&u.log("confirm",e,r),t.progress(e),n++,n===i&&t.complete(),!0}var t=this,n=0,i=this.images.length;if(this.hasAnyBroken=!1,!i)return this.complete(),void 0;for(var r=0;i>r;r++){var o=this.images[r];o.on("confirm",e),o.check()}},s.prototype.progress=function(e){this.hasAnyBroken=this.hasAnyBroken||!e.isLoaded;var t=this;setTimeout(function(){t.emit("progress",t,e),t.jqDeferred&&t.jqDeferred.notify&&t.jqDeferred.notify(t,e)})},s.prototype.complete=function(){var e=this.hasAnyBroken?"fail":"done";this.isComplete=!0;var t=this;setTimeout(function(){if(t.emit(e,t),t.emit("always",t),t.jqDeferred){var n=t.hasAnyBroken?"reject":"resolve";t.jqDeferred[n](t)}})},a&&(a.fn.imagesLoaded=function(e,t){var n=new s(this,e,t);return n.jqDeferred.promise(a(this))}),f.prototype=new t,f.prototype.check=function(){var e=v[this.img.src]||new c(this.img.src);if(e.isConfirmed)return this.confirm(e.isLoaded,"cached was confirmed"),void 0;if(this.img.complete&&void 0!==this.img.naturalWidth)return this.confirm(0!==this.img.naturalWidth,"naturalWidth"),void 0;var t=this;e.on("confirm",function(e,n){return t.confirm(e.isLoaded,n),!0}),e.check()},f.prototype.confirm=function(e,t){this.isLoaded=e,this.emit("confirm",this,t)};var v={};return c.prototype=new t,c.prototype.check=function(){if(!this.isChecked){var e=new Image;n.bind(e,"load",this),n.bind(e,"error",this),e.src=this.src,this.isChecked=!0}},c.prototype.handleEvent=function(e){var t="on"+e.type;this[t]&&this[t](e)},c.prototype.onload=function(e){this.confirm(!0,"onload"),this.unbindProxyEvents(e)},c.prototype.onerror=function(e){this.confirm(!1,"onerror"),this.unbindProxyEvents(e)},c.prototype.confirm=function(e,t){this.isConfirmed=!0,this.isLoaded=e,this.emit("confirm",this,t)},c.prototype.unbindProxyEvents=function(e){n.unbind(e.target,"load",this),n.unbind(e.target,"error",this)},s});
\ No newline at end of file
diff --git a/public/js/masonry.js b/public/js/masonry.js
new file mode 100644
index 0000000000000000000000000000000000000000..7358ad0cd7ae43bbace6ebf228357f8c0536dd1f
--- /dev/null
+++ b/public/js/masonry.js
@@ -0,0 +1,9 @@
+/*!
+ * Masonry PACKAGED v3.3.0
+ * Cascading grid layout library
+ * http://masonry.desandro.com
+ * MIT License
+ * by David DeSandro
+ */
+
+!function(a){function b(){}function c(a){function c(b){b.prototype.option||(b.prototype.option=function(b){a.isPlainObject(b)&&(this.options=a.extend(!0,this.options,b))})}function e(b,c){a.fn[b]=function(e){if("string"==typeof e){for(var g=d.call(arguments,1),h=0,i=this.length;i>h;h++){var j=this[h],k=a.data(j,b);if(k)if(a.isFunction(k[e])&&"_"!==e.charAt(0)){var l=k[e].apply(k,g);if(void 0!==l)return l}else f("no such method '"+e+"' for "+b+" instance");else f("cannot call methods on "+b+" prior to initialization; attempted to call '"+e+"'")}return this}return this.each(function(){var d=a.data(this,b);d?(d.option(e),d._init()):(d=new c(this,e),a.data(this,b,d))})}}if(a){var f="undefined"==typeof console?b:function(a){console.error(a)};return a.bridget=function(a,b){c(b),e(a,b)},a.bridget}}var d=Array.prototype.slice;"function"==typeof define&&define.amd?define("jquery-bridget/jquery.bridget",["jquery"],c):c("object"==typeof exports?require("jquery"):a.jQuery)}(window),function(a){function b(b){var c=a.event;return c.target=c.target||c.srcElement||b,c}var c=document.documentElement,d=function(){};c.addEventListener?d=function(a,b,c){a.addEventListener(b,c,!1)}:c.attachEvent&&(d=function(a,c,d){a[c+d]=d.handleEvent?function(){var c=b(a);d.handleEvent.call(d,c)}:function(){var c=b(a);d.call(a,c)},a.attachEvent("on"+c,a[c+d])});var e=function(){};c.removeEventListener?e=function(a,b,c){a.removeEventListener(b,c,!1)}:c.detachEvent&&(e=function(a,b,c){a.detachEvent("on"+b,a[b+c]);try{delete a[b+c]}catch(d){a[b+c]=void 0}});var f={bind:d,unbind:e};"function"==typeof define&&define.amd?define("eventie/eventie",f):"object"==typeof exports?module.exports=f:a.eventie=f}(window),function(){function a(){}function b(a,b){for(var c=a.length;c--;)if(a[c].listener===b)return c;return-1}function c(a){return function(){return this[a].apply(this,arguments)}}var d=a.prototype,e=this,f=e.EventEmitter;d.getListeners=function(a){var b,c,d=this._getEvents();if(a instanceof RegExp){b={};for(c in d)d.hasOwnProperty(c)&&a.test(c)&&(b[c]=d[c])}else b=d[a]||(d[a]=[]);return b},d.flattenListeners=function(a){var b,c=[];for(b=0;b<a.length;b+=1)c.push(a[b].listener);return c},d.getListenersAsObject=function(a){var b,c=this.getListeners(a);return c instanceof Array&&(b={},b[a]=c),b||c},d.addListener=function(a,c){var d,e=this.getListenersAsObject(a),f="object"==typeof c;for(d in e)e.hasOwnProperty(d)&&-1===b(e[d],c)&&e[d].push(f?c:{listener:c,once:!1});return this},d.on=c("addListener"),d.addOnceListener=function(a,b){return this.addListener(a,{listener:b,once:!0})},d.once=c("addOnceListener"),d.defineEvent=function(a){return this.getListeners(a),this},d.defineEvents=function(a){for(var b=0;b<a.length;b+=1)this.defineEvent(a[b]);return this},d.removeListener=function(a,c){var d,e,f=this.getListenersAsObject(a);for(e in f)f.hasOwnProperty(e)&&(d=b(f[e],c),-1!==d&&f[e].splice(d,1));return this},d.off=c("removeListener"),d.addListeners=function(a,b){return this.manipulateListeners(!1,a,b)},d.removeListeners=function(a,b){return this.manipulateListeners(!0,a,b)},d.manipulateListeners=function(a,b,c){var d,e,f=a?this.removeListener:this.addListener,g=a?this.removeListeners:this.addListeners;if("object"!=typeof b||b instanceof RegExp)for(d=c.length;d--;)f.call(this,b,c[d]);else for(d in b)b.hasOwnProperty(d)&&(e=b[d])&&("function"==typeof e?f.call(this,d,e):g.call(this,d,e));return this},d.removeEvent=function(a){var b,c=typeof a,d=this._getEvents();if("string"===c)delete d[a];else if(a instanceof RegExp)for(b in d)d.hasOwnProperty(b)&&a.test(b)&&delete d[b];else delete this._events;return this},d.removeAllListeners=c("removeEvent"),d.emitEvent=function(a,b){var c,d,e,f,g=this.getListenersAsObject(a);for(e in g)if(g.hasOwnProperty(e))for(d=g[e].length;d--;)c=g[e][d],c.once===!0&&this.removeListener(a,c.listener),f=c.listener.apply(this,b||[]),f===this._getOnceReturnValue()&&this.removeListener(a,c.listener);return this},d.trigger=c("emitEvent"),d.emit=function(a){var b=Array.prototype.slice.call(arguments,1);return this.emitEvent(a,b)},d.setOnceReturnValue=function(a){return this._onceReturnValue=a,this},d._getOnceReturnValue=function(){return this.hasOwnProperty("_onceReturnValue")?this._onceReturnValue:!0},d._getEvents=function(){return this._events||(this._events={})},a.noConflict=function(){return e.EventEmitter=f,a},"function"==typeof define&&define.amd?define("eventEmitter/EventEmitter",[],function(){return a}):"object"==typeof module&&module.exports?module.exports=a:e.EventEmitter=a}.call(this),function(a){function b(a){if(a){if("string"==typeof d[a])return a;a=a.charAt(0).toUpperCase()+a.slice(1);for(var b,e=0,f=c.length;f>e;e++)if(b=c[e]+a,"string"==typeof d[b])return b}}var c="Webkit Moz ms Ms O".split(" "),d=document.documentElement.style;"function"==typeof define&&define.amd?define("get-style-property/get-style-property",[],function(){return b}):"object"==typeof exports?module.exports=b:a.getStyleProperty=b}(window),function(a){function b(a){var b=parseFloat(a),c=-1===a.indexOf("%")&&!isNaN(b);return c&&b}function c(){}function d(){for(var a={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},b=0,c=g.length;c>b;b++){var d=g[b];a[d]=0}return a}function e(c){function e(){if(!m){m=!0;var d=a.getComputedStyle;if(j=function(){var a=d?function(a){return d(a,null)}:function(a){return a.currentStyle};return function(b){var c=a(b);return c||f("Style returned "+c+". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1"),c}}(),k=c("boxSizing")){var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style[k]="border-box";var g=document.body||document.documentElement;g.appendChild(e);var h=j(e);l=200===b(h.width),g.removeChild(e)}}}function h(a){if(e(),"string"==typeof a&&(a=document.querySelector(a)),a&&"object"==typeof a&&a.nodeType){var c=j(a);if("none"===c.display)return d();var f={};f.width=a.offsetWidth,f.height=a.offsetHeight;for(var h=f.isBorderBox=!(!k||!c[k]||"border-box"!==c[k]),m=0,n=g.length;n>m;m++){var o=g[m],p=c[o];p=i(a,p);var q=parseFloat(p);f[o]=isNaN(q)?0:q}var r=f.paddingLeft+f.paddingRight,s=f.paddingTop+f.paddingBottom,t=f.marginLeft+f.marginRight,u=f.marginTop+f.marginBottom,v=f.borderLeftWidth+f.borderRightWidth,w=f.borderTopWidth+f.borderBottomWidth,x=h&&l,y=b(c.width);y!==!1&&(f.width=y+(x?0:r+v));var z=b(c.height);return z!==!1&&(f.height=z+(x?0:s+w)),f.innerWidth=f.width-(r+v),f.innerHeight=f.height-(s+w),f.outerWidth=f.width+t,f.outerHeight=f.height+u,f}}function i(b,c){if(a.getComputedStyle||-1===c.indexOf("%"))return c;var d=b.style,e=d.left,f=b.runtimeStyle,g=f&&f.left;return g&&(f.left=b.currentStyle.left),d.left=c,c=d.pixelLeft,d.left=e,g&&(f.left=g),c}var j,k,l,m=!1;return h}var f="undefined"==typeof console?c:function(a){console.error(a)},g=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"];"function"==typeof define&&define.amd?define("get-size/get-size",["get-style-property/get-style-property"],e):"object"==typeof exports?module.exports=e(require("desandro-get-style-property")):a.getSize=e(a.getStyleProperty)}(window),function(a){function b(a){"function"==typeof a&&(b.isReady?a():g.push(a))}function c(a){var c="readystatechange"===a.type&&"complete"!==f.readyState;b.isReady||c||d()}function d(){b.isReady=!0;for(var a=0,c=g.length;c>a;a++){var d=g[a];d()}}function e(e){return"complete"===f.readyState?d():(e.bind(f,"DOMContentLoaded",c),e.bind(f,"readystatechange",c),e.bind(a,"load",c)),b}var f=a.document,g=[];b.isReady=!1,"function"==typeof define&&define.amd?define("doc-ready/doc-ready",["eventie/eventie"],e):"object"==typeof exports?module.exports=e(require("eventie")):a.docReady=e(a.eventie)}(window),function(a){function b(a,b){return a[g](b)}function c(a){if(!a.parentNode){var b=document.createDocumentFragment();b.appendChild(a)}}function d(a,b){c(a);for(var d=a.parentNode.querySelectorAll(b),e=0,f=d.length;f>e;e++)if(d[e]===a)return!0;return!1}function e(a,d){return c(a),b(a,d)}var f,g=function(){if(a.matches)return"matches";if(a.matchesSelector)return"matchesSelector";for(var b=["webkit","moz","ms","o"],c=0,d=b.length;d>c;c++){var e=b[c],f=e+"MatchesSelector";if(a[f])return f}}();if(g){var h=document.createElement("div"),i=b(h,"div");f=i?b:e}else f=d;"function"==typeof define&&define.amd?define("matches-selector/matches-selector",[],function(){return f}):"object"==typeof exports?module.exports=f:window.matchesSelector=f}(Element.prototype),function(a,b){"function"==typeof define&&define.amd?define("fizzy-ui-utils/utils",["doc-ready/doc-ready","matches-selector/matches-selector"],function(c,d){return b(a,c,d)}):"object"==typeof exports?module.exports=b(a,require("doc-ready"),require("desandro-matches-selector")):a.fizzyUIUtils=b(a,a.docReady,a.matchesSelector)}(window,function(a,b,c){var d={};d.extend=function(a,b){for(var c in b)a[c]=b[c];return a},d.modulo=function(a,b){return(a%b+b)%b};var e=Object.prototype.toString;d.isArray=function(a){return"[object Array]"==e.call(a)},d.makeArray=function(a){var b=[];if(d.isArray(a))b=a;else if(a&&"number"==typeof a.length)for(var c=0,e=a.length;e>c;c++)b.push(a[c]);else b.push(a);return b},d.indexOf=Array.prototype.indexOf?function(a,b){return a.indexOf(b)}:function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},d.removeFrom=function(a,b){var c=d.indexOf(a,b);-1!=c&&a.splice(c,1)},d.isElement="function"==typeof HTMLElement||"object"==typeof HTMLElement?function(a){return a instanceof HTMLElement}:function(a){return a&&"object"==typeof a&&1==a.nodeType&&"string"==typeof a.nodeName},d.setText=function(){function a(a,c){b=b||(void 0!==document.documentElement.textContent?"textContent":"innerText"),a[b]=c}var b;return a}(),d.getParent=function(a,b){for(;a!=document.body;)if(a=a.parentNode,c(a,b))return a},d.getQueryElement=function(a){return"string"==typeof a?document.querySelector(a):a},d.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},d.filterFindElements=function(a,b){a=d.makeArray(a);for(var e=[],f=0,g=a.length;g>f;f++){var h=a[f];if(d.isElement(h))if(b){c(h,b)&&e.push(h);for(var i=h.querySelectorAll(b),j=0,k=i.length;k>j;j++)e.push(i[j])}else e.push(h)}return e},d.debounceMethod=function(a,b,c){var d=a.prototype[b],e=b+"Timeout";a.prototype[b]=function(){var a=this[e];a&&clearTimeout(a);var b=arguments,f=this;this[e]=setTimeout(function(){d.apply(f,b),delete f[e]},c||100)}},d.toDashed=function(a){return a.replace(/(.)([A-Z])/g,function(a,b,c){return b+"-"+c}).toLowerCase()};var f=a.console;return d.htmlInit=function(c,e){b(function(){for(var b=d.toDashed(e),g=document.querySelectorAll(".js-"+b),h="data-"+b+"-options",i=0,j=g.length;j>i;i++){var k,l=g[i],m=l.getAttribute(h);try{k=m&&JSON.parse(m)}catch(n){f&&f.error("Error parsing "+h+" on "+l.nodeName.toLowerCase()+(l.id?"#"+l.id:"")+": "+n);continue}var o=new c(l,k),p=a.jQuery;p&&p.data(l,e,o)}})},d}),function(a,b){"function"==typeof define&&define.amd?define("outlayer/item",["eventEmitter/EventEmitter","get-size/get-size","get-style-property/get-style-property","fizzy-ui-utils/utils"],function(c,d,e,f){return b(a,c,d,e,f)}):"object"==typeof exports?module.exports=b(a,require("wolfy87-eventemitter"),require("get-size"),require("desandro-get-style-property"),require("fizzy-ui-utils")):(a.Outlayer={},a.Outlayer.Item=b(a,a.EventEmitter,a.getSize,a.getStyleProperty,a.fizzyUIUtils))}(window,function(a,b,c,d,e){function f(a){for(var b in a)return!1;return b=null,!0}function g(a,b){a&&(this.element=a,this.layout=b,this.position={x:0,y:0},this._create())}var h=a.getComputedStyle,i=h?function(a){return h(a,null)}:function(a){return a.currentStyle},j=d("transition"),k=d("transform"),l=j&&k,m=!!d("perspective"),n={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend",transition:"transitionend"}[j],o=["transform","transition","transitionDuration","transitionProperty"],p=function(){for(var a={},b=0,c=o.length;c>b;b++){var e=o[b],f=d(e);f&&f!==e&&(a[e]=f)}return a}();e.extend(g.prototype,b.prototype),g.prototype._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},g.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},g.prototype.getSize=function(){this.size=c(this.element)},g.prototype.css=function(a){var b=this.element.style;for(var c in a){var d=p[c]||c;b[d]=a[c]}},g.prototype.getPosition=function(){var a=i(this.element),b=this.layout.options,c=b.isOriginLeft,d=b.isOriginTop,e=parseInt(a[c?"left":"right"],10),f=parseInt(a[d?"top":"bottom"],10);e=isNaN(e)?0:e,f=isNaN(f)?0:f;var g=this.layout.size;e-=c?g.paddingLeft:g.paddingRight,f-=d?g.paddingTop:g.paddingBottom,this.position.x=e,this.position.y=f},g.prototype.layoutPosition=function(){var a=this.layout.size,b=this.layout.options,c={},d=b.isOriginLeft?"paddingLeft":"paddingRight",e=b.isOriginLeft?"left":"right",f=b.isOriginLeft?"right":"left",g=this.position.x+a[d];g=b.percentPosition&&!b.isHorizontal?g/a.width*100+"%":g+"px",c[e]=g,c[f]="";var h=b.isOriginTop?"paddingTop":"paddingBottom",i=b.isOriginTop?"top":"bottom",j=b.isOriginTop?"bottom":"top",k=this.position.y+a[h];k=b.percentPosition&&b.isHorizontal?k/a.height*100+"%":k+"px",c[i]=k,c[j]="",this.css(c),this.emitEvent("layout",[this])};var q=m?function(a,b){return"translate3d("+a+"px, "+b+"px, 0)"}:function(a,b){return"translate("+a+"px, "+b+"px)"};g.prototype._transitionTo=function(a,b){this.getPosition();var c=this.position.x,d=this.position.y,e=parseInt(a,10),f=parseInt(b,10),g=e===this.position.x&&f===this.position.y;if(this.setPosition(a,b),g&&!this.isTransitioning)return void this.layoutPosition();var h=a-c,i=b-d,j={},k=this.layout.options;h=k.isOriginLeft?h:-h,i=k.isOriginTop?i:-i,j.transform=q(h,i),this.transition({to:j,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},g.prototype.goTo=function(a,b){this.setPosition(a,b),this.layoutPosition()},g.prototype.moveTo=l?g.prototype._transitionTo:g.prototype.goTo,g.prototype.setPosition=function(a,b){this.position.x=parseInt(a,10),this.position.y=parseInt(b,10)},g.prototype._nonTransition=function(a){this.css(a.to),a.isCleaning&&this._removeStyles(a.to);for(var b in a.onTransitionEnd)a.onTransitionEnd[b].call(this)},g.prototype._transition=function(a){if(!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(a);var b=this._transn;for(var c in a.onTransitionEnd)b.onEnd[c]=a.onTransitionEnd[c];for(c in a.to)b.ingProperties[c]=!0,a.isCleaning&&(b.clean[c]=!0);if(a.from){this.css(a.from);var d=this.element.offsetHeight;d=null}this.enableTransition(a.to),this.css(a.to),this.isTransitioning=!0};var r=k&&e.toDashed(k)+",opacity";g.prototype.enableTransition=function(){this.isTransitioning||(this.css({transitionProperty:r,transitionDuration:this.layout.options.transitionDuration}),this.element.addEventListener(n,this,!1))},g.prototype.transition=g.prototype[j?"_transition":"_nonTransition"],g.prototype.onwebkitTransitionEnd=function(a){this.ontransitionend(a)},g.prototype.onotransitionend=function(a){this.ontransitionend(a)};var s={"-webkit-transform":"transform","-moz-transform":"transform","-o-transform":"transform"};g.prototype.ontransitionend=function(a){if(a.target===this.element){var b=this._transn,c=s[a.propertyName]||a.propertyName;if(delete b.ingProperties[c],f(b.ingProperties)&&this.disableTransition(),c in b.clean&&(this.element.style[a.propertyName]="",delete b.clean[c]),c in b.onEnd){var d=b.onEnd[c];d.call(this),delete b.onEnd[c]}this.emitEvent("transitionEnd",[this])}},g.prototype.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(n,this,!1),this.isTransitioning=!1},g.prototype._removeStyles=function(a){var b={};for(var c in a)b[c]="";this.css(b)};var t={transitionProperty:"",transitionDuration:""};return g.prototype.removeTransitionStyles=function(){this.css(t)},g.prototype.removeElem=function(){this.element.parentNode.removeChild(this.element),this.css({display:""}),this.emitEvent("remove",[this])},g.prototype.remove=function(){if(!j||!parseFloat(this.layout.options.transitionDuration))return void this.removeElem();var a=this;this.once("transitionEnd",function(){a.removeElem()}),this.hide()},g.prototype.reveal=function(){delete this.isHidden,this.css({display:""});var a=this.layout.options,b={},c=this.getHideRevealTransitionEndProperty("visibleStyle");b[c]=this.onRevealTransitionEnd,this.transition({from:a.hiddenStyle,to:a.visibleStyle,isCleaning:!0,onTransitionEnd:b})},g.prototype.onRevealTransitionEnd=function(){this.isHidden||this.emitEvent("reveal")},g.prototype.getHideRevealTransitionEndProperty=function(a){var b=this.layout.options[a];if(b.opacity)return"opacity";for(var c in b)return c},g.prototype.hide=function(){this.isHidden=!0,this.css({display:""});var a=this.layout.options,b={},c=this.getHideRevealTransitionEndProperty("hiddenStyle");b[c]=this.onHideTransitionEnd,this.transition({from:a.visibleStyle,to:a.hiddenStyle,isCleaning:!0,onTransitionEnd:b})},g.prototype.onHideTransitionEnd=function(){this.isHidden&&(this.css({display:"none"}),this.emitEvent("hide"))},g.prototype.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},g}),function(a,b){"function"==typeof define&&define.amd?define("outlayer/outlayer",["eventie/eventie","eventEmitter/EventEmitter","get-size/get-size","fizzy-ui-utils/utils","./item"],function(c,d,e,f,g){return b(a,c,d,e,f,g)}):"object"==typeof exports?module.exports=b(a,require("eventie"),require("wolfy87-eventemitter"),require("get-size"),require("fizzy-ui-utils"),require("./item")):a.Outlayer=b(a,a.eventie,a.EventEmitter,a.getSize,a.fizzyUIUtils,a.Outlayer.Item)}(window,function(a,b,c,d,e,f){function g(a,b){var c=e.getQueryElement(a);if(!c)return void(h&&h.error("Bad element for "+this.constructor.namespace+": "+(c||a)));this.element=c,i&&(this.$element=i(this.element)),this.options=e.extend({},this.constructor.defaults),this.option(b);var d=++k;this.element.outlayerGUID=d,l[d]=this,this._create(),this.options.isInitLayout&&this.layout()}var h=a.console,i=a.jQuery,j=function(){},k=0,l={};return g.namespace="outlayer",g.Item=f,g.defaults={containerStyle:{position:"relative"},isInitLayout:!0,isOriginLeft:!0,isOriginTop:!0,isResizeBound:!0,isResizingContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}},e.extend(g.prototype,c.prototype),g.prototype.option=function(a){e.extend(this.options,a)},g.prototype._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),e.extend(this.element.style,this.options.containerStyle),this.options.isResizeBound&&this.bindResize()},g.prototype.reloadItems=function(){this.items=this._itemize(this.element.children)},g.prototype._itemize=function(a){for(var b=this._filterFindItemElements(a),c=this.constructor.Item,d=[],e=0,f=b.length;f>e;e++){var g=b[e],h=new c(g,this);d.push(h)}return d},g.prototype._filterFindItemElements=function(a){return e.filterFindElements(a,this.options.itemSelector)},g.prototype.getItemElements=function(){for(var a=[],b=0,c=this.items.length;c>b;b++)a.push(this.items[b].element);return a},g.prototype.layout=function(){this._resetLayout(),this._manageStamps();var a=void 0!==this.options.isLayoutInstant?this.options.isLayoutInstant:!this._isLayoutInited;this.layoutItems(this.items,a),this._isLayoutInited=!0},g.prototype._init=g.prototype.layout,g.prototype._resetLayout=function(){this.getSize()},g.prototype.getSize=function(){this.size=d(this.element)},g.prototype._getMeasurement=function(a,b){var c,f=this.options[a];f?("string"==typeof f?c=this.element.querySelector(f):e.isElement(f)&&(c=f),this[a]=c?d(c)[b]:f):this[a]=0},g.prototype.layoutItems=function(a,b){a=this._getItemsForLayout(a),this._layoutItems(a,b),this._postLayout()},g.prototype._getItemsForLayout=function(a){for(var b=[],c=0,d=a.length;d>c;c++){var e=a[c];e.isIgnored||b.push(e)}return b},g.prototype._layoutItems=function(a,b){if(this._emitCompleteOnItems("layout",a),a&&a.length){for(var c=[],d=0,e=a.length;e>d;d++){var f=a[d],g=this._getItemLayoutPosition(f);g.item=f,g.isInstant=b||f.isLayoutInstant,c.push(g)}this._processLayoutQueue(c)}},g.prototype._getItemLayoutPosition=function(){return{x:0,y:0}},g.prototype._processLayoutQueue=function(a){for(var b=0,c=a.length;c>b;b++){var d=a[b];this._positionItem(d.item,d.x,d.y,d.isInstant)}},g.prototype._positionItem=function(a,b,c,d){d?a.goTo(b,c):a.moveTo(b,c)},g.prototype._postLayout=function(){this.resizeContainer()},g.prototype.resizeContainer=function(){if(this.options.isResizingContainer){var a=this._getContainerSize();a&&(this._setContainerMeasure(a.width,!0),this._setContainerMeasure(a.height,!1))}},g.prototype._getContainerSize=j,g.prototype._setContainerMeasure=function(a,b){if(void 0!==a){var c=this.size;c.isBorderBox&&(a+=b?c.paddingLeft+c.paddingRight+c.borderLeftWidth+c.borderRightWidth:c.paddingBottom+c.paddingTop+c.borderTopWidth+c.borderBottomWidth),a=Math.max(a,0),this.element.style[b?"width":"height"]=a+"px"}},g.prototype._emitCompleteOnItems=function(a,b){function c(){e.emitEvent(a+"Complete",[b])}function d(){g++,g===f&&c()}var e=this,f=b.length;if(!b||!f)return void c();for(var g=0,h=0,i=b.length;i>h;h++){var j=b[h];j.once(a,d)}},g.prototype.ignore=function(a){var b=this.getItem(a);b&&(b.isIgnored=!0)},g.prototype.unignore=function(a){var b=this.getItem(a);b&&delete b.isIgnored},g.prototype.stamp=function(a){if(a=this._find(a)){this.stamps=this.stamps.concat(a);for(var b=0,c=a.length;c>b;b++){var d=a[b];this.ignore(d)}}},g.prototype.unstamp=function(a){if(a=this._find(a))for(var b=0,c=a.length;c>b;b++){var d=a[b];e.removeFrom(this.stamps,d),this.unignore(d)}},g.prototype._find=function(a){return a?("string"==typeof a&&(a=this.element.querySelectorAll(a)),a=e.makeArray(a)):void 0},g.prototype._manageStamps=function(){if(this.stamps&&this.stamps.length){this._getBoundingRect();for(var a=0,b=this.stamps.length;b>a;a++){var c=this.stamps[a];this._manageStamp(c)}}},g.prototype._getBoundingRect=function(){var a=this.element.getBoundingClientRect(),b=this.size;this._boundingRect={left:a.left+b.paddingLeft+b.borderLeftWidth,top:a.top+b.paddingTop+b.borderTopWidth,right:a.right-(b.paddingRight+b.borderRightWidth),bottom:a.bottom-(b.paddingBottom+b.borderBottomWidth)}},g.prototype._manageStamp=j,g.prototype._getElementOffset=function(a){var b=a.getBoundingClientRect(),c=this._boundingRect,e=d(a),f={left:b.left-c.left-e.marginLeft,top:b.top-c.top-e.marginTop,right:c.right-b.right-e.marginRight,bottom:c.bottom-b.bottom-e.marginBottom};return f},g.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},g.prototype.bindResize=function(){this.isResizeBound||(b.bind(a,"resize",this),this.isResizeBound=!0)},g.prototype.unbindResize=function(){this.isResizeBound&&b.unbind(a,"resize",this),this.isResizeBound=!1},g.prototype.onresize=function(){function a(){b.resize(),delete b.resizeTimeout}this.resizeTimeout&&clearTimeout(this.resizeTimeout);var b=this;this.resizeTimeout=setTimeout(a,100)},g.prototype.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},g.prototype.needsResizeLayout=function(){var a=d(this.element),b=this.size&&a;return b&&a.innerWidth!==this.size.innerWidth},g.prototype.addItems=function(a){var b=this._itemize(a);return b.length&&(this.items=this.items.concat(b)),b},g.prototype.appended=function(a){var b=this.addItems(a);b.length&&(this.layoutItems(b,!0),this.reveal(b))},g.prototype.prepended=function(a){var b=this._itemize(a);if(b.length){var c=this.items.slice(0);this.items=b.concat(c),this._resetLayout(),this._manageStamps(),this.layoutItems(b,!0),this.reveal(b),this.layoutItems(c)}},g.prototype.reveal=function(a){this._emitCompleteOnItems("reveal",a);for(var b=a&&a.length,c=0;b&&b>c;c++){var d=a[c];d.reveal()}},g.prototype.hide=function(a){this._emitCompleteOnItems("hide",a);for(var b=a&&a.length,c=0;b&&b>c;c++){var d=a[c];d.hide()}},g.prototype.revealItemElements=function(a){var b=this.getItems(a);this.reveal(b)},g.prototype.hideItemElements=function(a){var b=this.getItems(a);this.hide(b)},g.prototype.getItem=function(a){for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];if(d.element===a)return d}},g.prototype.getItems=function(a){a=e.makeArray(a);for(var b=[],c=0,d=a.length;d>c;c++){var f=a[c],g=this.getItem(f);g&&b.push(g)}return b},g.prototype.remove=function(a){var b=this.getItems(a);if(this._emitCompleteOnItems("remove",b),b&&b.length)for(var c=0,d=b.length;d>c;c++){var f=b[c];f.remove(),e.removeFrom(this.items,f)}},g.prototype.destroy=function(){var a=this.element.style;a.height="",a.position="",a.width="";for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];d.destroy()}this.unbindResize();var e=this.element.outlayerGUID;delete l[e],delete this.element.outlayerGUID,i&&i.removeData(this.element,this.constructor.namespace)},g.data=function(a){a=e.getQueryElement(a);var b=a&&a.outlayerGUID;return b&&l[b]},g.create=function(a,b){function c(){g.apply(this,arguments)}return Object.create?c.prototype=Object.create(g.prototype):e.extend(c.prototype,g.prototype),c.prototype.constructor=c,c.defaults=e.extend({},g.defaults),e.extend(c.defaults,b),c.prototype.settings={},c.namespace=a,c.data=g.data,c.Item=function(){f.apply(this,arguments)},c.Item.prototype=new f,e.htmlInit(c,a),i&&i.bridget&&i.bridget(a,c),c},g.Item=f,g}),function(a,b){"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size","fizzy-ui-utils/utils"],b):"object"==typeof exports?module.exports=b(require("outlayer"),require("get-size"),require("fizzy-ui-utils")):a.Masonry=b(a.Outlayer,a.getSize,a.fizzyUIUtils)}(window,function(a,b,c){var d=a.create("masonry");return d.prototype._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns();var a=this.cols;for(this.colYs=[];a--;)this.colYs.push(0);this.maxY=0},d.prototype.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var a=this.items[0],c=a&&a.element;this.columnWidth=c&&b(c).outerWidth||this.containerWidth}var d=this.columnWidth+=this.gutter,e=this.containerWidth+this.gutter,f=e/d,g=d-e%d,h=g&&1>g?"round":"floor";f=Math[h](f),this.cols=Math.max(f,1)},d.prototype.getContainerWidth=function(){var a=this.options.isFitWidth?this.element.parentNode:this.element,c=b(a);this.containerWidth=c&&c.innerWidth},d.prototype._getItemLayoutPosition=function(a){a.getSize();var b=a.size.outerWidth%this.columnWidth,d=b&&1>b?"round":"ceil",e=Math[d](a.size.outerWidth/this.columnWidth);e=Math.min(e,this.cols);for(var f=this._getColGroup(e),g=Math.min.apply(Math,f),h=c.indexOf(f,g),i={x:this.columnWidth*h,y:g},j=g+a.size.outerHeight,k=this.cols+1-f.length,l=0;k>l;l++)this.colYs[h+l]=j;return i},d.prototype._getColGroup=function(a){if(2>a)return this.colYs;for(var b=[],c=this.cols+1-a,d=0;c>d;d++){var e=this.colYs.slice(d,d+a);b[d]=Math.max.apply(Math,e)}return b},d.prototype._manageStamp=function(a){var c=b(a),d=this._getElementOffset(a),e=this.options.isOriginLeft?d.left:d.right,f=e+c.outerWidth,g=Math.floor(e/this.columnWidth);g=Math.max(0,g);var h=Math.floor(f/this.columnWidth);h-=f%this.columnWidth?0:1,h=Math.min(this.cols-1,h);for(var i=(this.options.isOriginTop?d.top:d.bottom)+c.outerHeight,j=g;h>=j;j++)this.colYs[j]=Math.max(i,this.colYs[j])},d.prototype._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var a={height:this.maxY};return this.options.isFitWidth&&(a.width=this._getContainerFitWidth()),a},d.prototype._getContainerFitWidth=function(){for(var a=0,b=this.cols;--b&&0===this.colYs[b];)a++;return(this.cols-a)*this.columnWidth-this.gutter},d.prototype.needsResizeLayout=function(){var a=this.containerWidth;return this.getContainerWidth(),a!==this.containerWidth},d});
\ No newline at end of file
diff --git a/public/js/scriptResultPage.js b/public/js/scriptResultPage.js
new file mode 100644
index 0000000000000000000000000000000000000000..8ba3a92a9093d13feaa31cbdefd549f43a713425
--- /dev/null
+++ b/public/js/scriptResultPage.js
@@ -0,0 +1,205 @@
+$(document).ready(function(){
+	if( top != self ){
+        	postSize($(document).height());
+	}
+	getDocumentReadyForUse();
+});
+
+function postSize(height){
+	var target = parent.postMessage ? parent : (parent.document.postMessage ? parent.document : undefined);
+
+    	if(typeof target != "undefined" && document.body.scrollHeight){
+        	target.postMessage(height, "*");
+        }
+}
+
+function tabs(){
+	$("#foki  a").each(function(){
+		$(this).attr("href", "#"+$(this).attr("aria-controls"));
+		$(this).attr("role","tab");
+		$(this).attr("data-toggle","tab");
+	});
+	$("#foki a").off();
+	$("#foki a").on("show.bs.tab", function(e){
+		var fokus = $(this).attr("aria-controls");
+		var link = $("#"+fokus+"TabSelector a").attr("data-href");
+		if($("#"+fokus+"TabSelector").attr("data-loaded") != "1"){
+			$.get(link, function(data){
+				$("#"+fokus+"TabSelector").attr("data-loaded", "1");
+				$("#"+fokus).html(data);
+				$("input[name=focus]").val($("#foki li.active a").attr("aria-controls"));
+				getDocumentReadyForUse();
+			});
+		}
+		getDocumentReadyForUse();
+	});
+}
+
+function getDocumentReadyForUse(){
+	clickLog();
+	popovers();
+	imageLoader();
+	pagination();
+	tabs();
+	theme();
+	fokiChanger();
+}
+
+function theme(){
+	if(localStorage){
+		var theme = localStorage.getItem("theme");
+		if(theme != null){
+			if((theme.match(/,/g) || []).length != 3){
+				localStorage.removeItem("theme");
+			}else{
+				theme = theme.split(",");
+				$($("head link")[2]).attr("href", "/css/theme.css.php?r=" + theme[0] + "&g=" + theme[1] + "&b=" + theme[2] + "&a=" + theme[3]);
+			}
+		}
+	}
+}
+
+function clickLog(){
+	$(".result .link a, .result .title a").off();
+	$(".result .link a, .result .title a").click(function(){
+		$.get("/meta/clickstats.pl", {i:$("meta[name=p]").attr("content"), s:$(this).attr("data-hoster"), q:$("meta[name=q]").attr("content"), p:$(this).attr("data-count"), url:$(this).attr("href")});
+	});
+}
+
+function popovers(){
+	$("[data-toggle=popover]").each(function(e){
+			$(this).popover("destroy");
+			$(this).popover({
+				//html			:	true,
+				//title			:	"<span class='glyphicon glyphicon-cog'></span> Optionen",
+				content			:	$(this).parent().find(".content").html()
+			});
+	});
+}
+
+function pagination(){
+	$(".pagination li:not(.active) > a").attr("href", "#");
+	$(".pagination li.disabled > a").removeAttr("href");
+	$(".pagination li:not(.active) > a").off();
+	$(".pagination li:not(.active) > a").click(paginationHandler);
+}
+function paginationHandler(){
+	var link = $(this).attr("data-href");
+	if(link.length == 0){return;}
+	var tabPane = $(".tab-pane.active");
+	$(tabPane).html("<div class=\"loader\"><img src=\"/img/ajax-loader.gif\" alt=\"\" /></div>");
+	$.get(link, function(data){
+		$(tabPane).html(data);
+		$(".pagination li:not(.active) > a").attr("href", "#");
+		$(".pagination li.disabled > a").removeAttr("href");
+		$(".pagination li:not(.active) > a").off();
+		$(".pagination li:not(.active) > a").click(paginationHandler);
+		getDocumentReadyForUse();
+	});
+}
+
+function imageLoader(){
+	if(typeof $("#container").masonry == "undefined"){
+		return;
+	}
+
+	var $grid = $("#container").masonry(
+			{
+				columnWidth: 150,
+				itemSelector: '.item',
+				gutter: 10,
+				isFitWidth: true
+			}
+		);
+	$grid.imagesLoaded().progress(function(instance,image){$grid.masonry('layout');});
+}
+
+function eliminateHost(host){
+	$(".result:not(.ad)").each(function(e){
+		var host2 = $(this).find(".link-link > a").attr("data-host");
+		if(host2.indexOf(host) === 0){
+			$(this).css("display", "none");
+		}
+	});
+}
+
+function fokiChanger(){
+	$("#fokiChanger ul > li").click(function(){
+		document.location.href=$(this).attr("data-href");
+	});
+}
+// Polyfill for form attribute
+(function($) {
+	  /**
+	   * polyfill for html5 form attr
+	   */
+	  // detect if browser supports this
+	  var sampleElement = $('[form]').get(0);
+	  var isIE11 = !(window.ActiveXObject) && "ActiveXObject" in window;
+	  if (sampleElement && window.HTMLFormElement && sampleElement.form instanceof HTMLFormElement && !isIE11) {
+	    // browser supports it, no need to fix
+	    return;
+	  }
+	  /**
+	   * Append a field to a form
+	   *
+	   */
+	  $.fn.appendField = function(data) {
+	    // for form only
+	    if (!this.is('form')) return;
+
+	    // wrap data
+	    if (!$.isArray(data) && data.name && data.value) {
+	      data = [data];
+	    }
+
+	    var $form = this;
+
+	    // attach new params
+	    $.each(data, function(i, item) {
+	      $('<input/>')
+	        .attr('type', 'hidden')
+	        .attr('name', item.name)
+	        .val(item.value).appendTo($form);
+	    });
+
+	    return $form;
+	  };
+
+	  /**
+	   * Find all input fields with form attribute point to jQuery object
+	   * 
+	   */
+	  $('form[id]').submit(function(e) {
+	    var $form = $(this);
+	    // serialize data
+	    var data = $('[form='+ $form.attr('id') + ']').serializeArray();
+	    // append data to form
+	    $form.appendField(data);
+	  }).each(function() {
+	    var form = this,
+	      $form = $(form),
+	      $fields = $('[form=' + $form.attr('id') + ']');
+
+	    $fields.filter('button, input').filter('[type=reset],[type=submit]').click(function() {
+	      var type = this.type.toLowerCase();
+	      if (type === 'reset') {
+	        // reset form
+	        form.reset();
+	        // for elements outside form
+	        $fields.each(function() {
+	          this.value = this.defaultValue;
+	          this.checked = this.defaultChecked;
+	        }).filter('select').each(function() {
+	          $(this).find('option').each(function() {
+	            this.selected = this.defaultSelected;
+	          });
+	        });
+	      } else if (type.match(/^submit|image$/i)) {
+	        $(form).appendField({name: this.name, value: this.value}).submit();
+	      }
+	    });
+	  });
+
+
+	})(jQuery);
diff --git a/resources/lang/de/datenschutz.php b/resources/lang/de/datenschutz.php
new file mode 100644
index 0000000000000000000000000000000000000000..25a4c18f971c9b11e5a82d3f305e4926947eff6b
--- /dev/null
+++ b/resources/lang/de/datenschutz.php
@@ -0,0 +1,33 @@
+<?php
+
+return [
+	'head' => 'Datenschutz und Privatsph&auml;re',
+
+	'general.1' => 'Datenschutz und Privatsph&auml;re geh&ouml;ren f&uuml;r uns zu den wichtigsten G&uuml;tern im Internet. Sie sind absolut sch&uuml;tzenswert und d&uuml;rfen keinesfalls kommerziell genutzt werden. Im Folgenden eine kurze Auflistung unserer Vorgehensweise. Eine ausf&uuml;hrliche Darstellung mit Hintergrund-Informationen, warum wir die einzige wirklich sichere Suchmaschine betreiben, finden Sie',
+	'general.2' => 'hier',
+
+	'policy.1' => 'Unsere Vorgehensweise/Policy:',
+	'policy.2' => 'Wir speichern weder Ihre IP-Adresse, noch den',
+	'policy.3' => '"Fingerabdruck" Ihres Browsers',
+	'policy.4' => '(der Sie mit hoher Wahrscheinlichkeit ebenfalls eindeutig identifizieren k&ouml;nnte).',
+	'policy.5' => 'Wir setzen keine Cookies oder benutzen Tracking-Pixel oder &auml;hnliche Technologien, um unsere Nutzer zu "tracken" (tracken = Verfolgen der Bewegungen im Internet).',
+	'policy.6' => 'Die Daten&uuml;bertragung von MetaGer erfolgt ausschlie&szlig;lich automatisch verschl&uuml;sselt &uuml;ber das https-Protokoll.',
+	'policy.7' => 'Wir bieten einen Zugang &uuml;ber das anonyme TOR-Netzwerk, den',
+	'policy.8' => 'MetaGer-TOR-hidden Service.',
+	'policy.9' => 'Da der Zugang &uuml;ber das TOR-Netzwerk vielen Nutzern kompliziert erscheint, manchmal auch langsam ist, haben wir einen weiteren Weg implementiert, auch die Ergebnis-Webseiten ebenfalls anonym erreichen zu k&ouml;nnen: durch Anklicken des Links "anonym &ouml;ffnen". Dadurch sind Ihre pers&ouml;nlichen Daten beim Klick auf MetaGer-Ergebnisse und sogar bei allen Folge-Klicks danach gesch&uuml;tzt.',
+	'policy.10' => 'Wir machen m&ouml;glichst wenig Werbung, kennzeichnen diese klar und eindeutig, und vertrauen f&uuml;r unsere Finanzierung auf unsere Nutzer, Ihre',
+	'policy.11' => 'Spenden',
+	'policy.12' => 'und Mitgliedsbetr&auml;ge zum',
+	'policy.13' => 'MetaGer wird von der deutschen gemeinn&uuml;tzigen Organisation',
+	'policy.14' => 'in Zusammenarbeit mit der',
+	'policy.15' => 'Leibniz Universit&auml;t Hannover',
+	'policy.16' => 'betrieben und weiterentwickelt.',
+	'policy.17' => 'Unsere Server stehen ausschlie&szlig;lich in Deutschland. Sie unterliegen damit vollst&auml;ndig deutschem Datenschutzrecht, welches als das h&auml;rteste der Welt gilt.',
+	'policy.18' => 'Nach den',
+	'policy.19' => 'Enth&uuml;llungen von Edward Snowden im Juni 2013',
+	'policy.20' => 'positionierten sich etliche Suchmaschinen mit der Selbstbeschreibung, dass Suchen bei ihnen sicher sei, weil die IP-Adressen der Nutzer nicht gespeichert w&uuml;rden. So ehrenwert und auch ehrlich gemeint diese Selbstbeschreibungen sein m&ouml;gen - Fakt ist, dass viele dieser Suchmaschinen zumindest einen Teil ihrer Server in den USA hosten. Das gilt auch f&uuml;r diejenigen, die von manchen Datensch&uuml;tzern immer noch als "besonders empfehlenswert" gelobt und als Empfehlung verbreitet werden. Denn diese Suchmaschinen',
+	'policy.21' => 'unterliegen nach dem Patriot Act und US-Recht dem vollen Zugriff der dortigen Beh&ouml;rden.',
+	'policy.22' => 'Sie k&ouml;nnen also gar keine gesch&uuml;tzte Privatsph&auml;re bieten (selbst dann nicht, wenn sie selber sich noch so sehr darum bem&uuml;hen).',
+
+	'twitter' => 'Was andere &uuml;ber unser Privacy-Konzept auf Twitter sagen:',
+];
\ No newline at end of file
diff --git a/resources/lang/de/fokiNames.php b/resources/lang/de/fokiNames.php
new file mode 100644
index 0000000000000000000000000000000000000000..26e98681ca88d7c263654fa4e5a9fd2d826bffb3
--- /dev/null
+++ b/resources/lang/de/fokiNames.php
@@ -0,0 +1,10 @@
+<?php
+
+return [
+	'web' 			=>	"web",
+	'nachrichten'	=>	"nachrichten",
+	'wissenschaft'	=>	'wissenschaft',
+	'produktsuche'	=>	'produktsuche',
+	'bilder'		=>	'bilder',
+	'angepasst'		=>	'angepasst'
+];
\ No newline at end of file
diff --git a/resources/lang/de/impressum.php b/resources/lang/de/impressum.php
new file mode 100644
index 0000000000000000000000000000000000000000..08fc448e5b8c93c8a0040e5ff051c08b9cf5ee1b
--- /dev/null
+++ b/resources/lang/de/impressum.php
@@ -0,0 +1,22 @@
+<?php
+
+return [
+	'headline.1' => 'SUMA-EV - Verein für freien Wissenszugang (e.V.)',
+	'headline.2' => 'in Kooperation mit der',
+
+	'info.1' => 'Wikipedia-Eintrag zum',
+	'info.2' => 'Kontakt',
+	'info.3' => 'Verschlüsselndes Kontakformular',
+	'info.4' => 'Vorstand',
+	'info.5' => 'Geschäftsführung',
+	'info.6' => 'Jugendschutzbeauftragter',
+	'info.7' => 'Inhaltlich Verantwortlicher gemäß § 55 Abs. 2 RStV',
+	'info.8' => 'ist ein gemeinnütziger
+Verein, eingetragen in das Vereinsregister beim Amtsgericht Hannover
+unter',
+	'info.9' => 'Umsatzsteueridentifikationsnummer',
+	'info.10' => 'Die "Gottfried Wilhelm Leibniz Universität Hannover" ist eine
+Körperschaft des öffentlichen Rechts.',
+	'info.11' => 'Haftungshinweis',
+	'info.12' => 'Trotz sorgfältiger inhaltlicher Kontrolle übernehmen wir keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.',
+];
\ No newline at end of file
diff --git a/resources/lang/de/index.php b/resources/lang/de/index.php
new file mode 100644
index 0000000000000000000000000000000000000000..98dde7f60cd7cc8d5463f47da192a4acba3d194d
--- /dev/null
+++ b/resources/lang/de/index.php
@@ -0,0 +1,21 @@
+<?php
+
+return [
+	'foki.bilder'	=>	'Bilder',
+	'foki.nachrichten'	=>	'Nachrichten',
+	'foki.wissenschaft'	=>	'Wissenschaft',
+	'foki.produkte'		=>	'Produkte',
+	'foki.anpassen'		=>	'anpassen',
+	'conveyor'			=>	'Einkaufen bei MetaGer-Fördershops',
+	'plugin'			=>	'MetaGer-Plugin hinzufügen',
+	'sponsors'			=>	'Sponsoren',
+	'sponsors.woxikon'	=>	'Woxikon: Nach Wörtern & Synonymen suchen',
+	'sponsors.gutscheine'	=>	'Aktuelle Gutscheine auf Gutschein-Magazin.de',
+	'sponsors.kredite'		=>	'Günstige Kredite auf FINANZCHECK.de vergleichen ',
+	'about.title'			=>	'Ãœber uns',
+	'about.1.1'				=>	'Datenschutz & Privatsphäre',
+	'about.1.2'				=>	'  sind bei uns einfach & selbstverständlich.',
+	'about.2.1'				=>	'Wir arbeiten nicht gewinnorientiert, wir sind ein ',
+	'about.2.2'				=>	'gemeinnütziger Verein. '
+
+];
\ No newline at end of file
diff --git a/resources/lang/de/spenden.php b/resources/lang/de/spenden.php
new file mode 100644
index 0000000000000000000000000000000000000000..59aeb85ac4a262733a4975518484f1c76c48ff41
--- /dev/null
+++ b/resources/lang/de/spenden.php
@@ -0,0 +1,48 @@
+<?php
+
+return [
+	'headline.1' => 'Ihre Spende f&uuml;r SUMA-EV und MetaGer',
+	'headline.2' => 'Helfen Sie mit, dass freie Suchmaschinen im Internet frei bleiben. Das digitale Wissen der Welt muss ohne Bevormundung durch Staaten oder Konzerne frei zug&auml;nglich sein und bleiben.',
+
+	'bankinfo.1' => 'Durch eine &Uuml;berweisung',
+	'bankinfo.2' => 'SUMA-EV
+IBAN: DE64 4306 0967 4075 0332 01
+BIC: GENODEM1GLS
+(Konto-Nr.: 4075 0332 01, BLZ: 43060967)
+GLS Gemeinschaftsbank, Bochum',
+	'bankinfo.3' => 'Falls Sie eine Spendenbescheinigung w&uuml;nschen, geben Sie auf dem &Uuml;berweisungsformular bitte Ihre vollst&auml;ndige Adresse, und (sofern vorhanden) auch Ihre E-Mail Adresse an.',
+
+	'logos.1' => 'Bequem mit Paypal',
+	'logos.2' => 'oder Bitcoins',
+
+	'lastschrift.1' => 'Spenden mittels elektronischem Lastschriftverfahren:',
+	'lastschrift.2' => 'Tragen Sie hier Ihre Kontodaten sowie den gew&uuml;nschten Betrag ein. Wir buchen dann entsprechend von Ihrem Konto ab.',
+	'lastschrift.3' => 'Bitte geben Sie ihren Namen ein:',
+	'lastschrift.3.placeholder' => 'Name',
+	'lastschrift.4' => 'Ihre E-Mail Adresse:',
+	'lastschrift.5' => 'Ihre Telefonnummer, um Ihre Spende ggf. durch einen R&uuml;ckruf zu verifizieren:',
+	'lastschrift.6' => 'Ihre IBAN oder Kontonummer:',
+	'lastschrift.7' => 'Ihre BIC oder Bankleitzahl:',
+	'lastschrift.8' => 'Hier k&ouml;nnen Sie uns formlos mitteilen, welchen Betrag Sie spenden m&ouml;chten und ggf. noch eine Mitteilung dazu senden:',
+	'lastschrift.8.placeholder' => 'Nachricht',
+	'lastschrift.9' => 'Spenden',
+	'lastschrift.10' => 'Ihre Daten werden &uuml;ber eine verschl&uuml;sselte Verbindung zu uns &uuml;bertragen und k&ouml;nnen von Dritten nicht mitgelesen werden. Der Betrag, den Sie angegeben haben, wird dann durch uns von Ihrem Konto abgebucht. SUMA-EV verwendet Ihre Daten ausschlie&szlig;lich f&uuml;r die Spendenabrechnung; Ihre Daten werden nicht weitergegeben. Spenden an den SUMA-EV sind steuerlich absetzbar, da der Verein vom Finanzamt Hannover Nord als gemeinn&uuml;tzig anerkannt ist, eingetragen in das Vereinsregister beim Amtsgericht Hannover unter VR200033. Eine Bescheinigung f&uuml;r Einzelspenden oberhalb 200,-EUR wird automatisch zugesandt. Bei Spenden bis 200,-EUR gen&uuml;gt der Kontoauszug f&uuml;r die Absetzbarkeit beim Finanzamt.',
+
+	'about.0' => '&Uuml;ber uns',
+	'about.1.1' => 'Die deutsche Suchmaschine MetaGer wird betrieben und stetig weiterentwickelt vom SUMA-EV - Verein f&uuml;r freien Wissenszugang. Wir sind ein gemeinn&uuml;tzig anerkannter Verein, eines unserer Ziele ist die Entwicklung und der Betrieb von Suchmaschinen. Wir erhalten keine &ouml;ffentlichen F&ouml;rdergelder und sind daher auf Ihre Spenden angewiesen. Wir haben unsere Werbung stark reduziert, denn wir vertrauen auf IHRE Unterst&uuml;tzung.
+Helfen Sie mit, dass freie Suchmaschinen im Internet erhalten bleiben und weiterentwickelt werden!
+Das k&ouml;nnen Sie mit einer Spende auf dieser Seite tun. Oder, wenn Sie freie Suchmaschinen auch langfristig sichern wollen:',
+	'about.1.2' => 'Werden Sie Mitglied im SUMA-EV',
+	'about.2.1' => 'Wenn Sie 50,-EUR oder mehr spenden, oder Mitglied im ',
+	'about.2.2' => 'werden, dann k&ouml;nnen Sie, wenn Sie wollen, auf unserer',
+	'about.2.3' => 'Mitglieder- und Sponsorenseite',
+	'about.2.4' => 'namentlich mit Link auf Ihre Homepage (sofern vorhanden) genannt werden (wenn Sie dies w&uuml;nschen, vermerken Sie es bitte in Ihrer Mitteilung)',
+	'about.2.5' => 'Oder werden Sie SUMA-EV F&ouml;rderer!',
+	'about.3.1' => 'JEDE Form Ihrer Unterst&uuml;tzung',
+	'about.3.2' => 'hilft mit, dass freie Suchmaschinen und freier Wissenszugang im Internet eine Chance haben. Zum freien Wissenszugang geh&ouml;rt es auch, dass Ihre Daten weder &uuml;berwacht, noch Ihre Internet-Adressen und Verbindungsdaten gespeichert werden. Bei uns wird Ihre Internet-Adresse bereits w&auml;hrend der Suche anonymisiert, sie wird nicht gespeichert und nicht an Dritte weitergegeben. Freie Internet-Suche ohne &Uuml;berwachung:',
+	'about.4.1' => 'Eine weitere M&ouml;glichkeit, MetaGer zu f&ouml;rdern, besteht darin, dass Sie Ihren n&auml;chsten Online-Einkauf bei MetaGer-F&ouml;rdershops machen. Damit wir auf diesem Weg unterst&uuml;tzt werden k&ouml;nnen, haben wir uns in das Netzwerk zur F&ouml;rderung gemeinn&uuml;tzig anerkannter Organisationen eingebracht, das Projekt',
+	'about.4.2' => 'Unter dem Dach dieses Projektes sind ca. 400 Online-Shops (von Amazon bis Zooplus) vereint, die sich bereit erkl&auml;rt haben, von allen Verk&auml;ufen etwa 6% an das Projekt zu spenden. Statt wie bisher direkt zum Online-Shop zu surfen, gehen Sie zun&auml;chst auf',
+	'about.4.3' => 'und klicken dort unterhalb der Suchwort-Eingabebox auf',
+	'about.4.4' => 'Machen Sie Ihre Eink&auml;ufe bei MetaGer-F&ouml;rdershops - klicken Sie hier!',
+	'about.4.5' => 'Dieser Klick f&uuml;hrt Sie in die Shop-Auswahl des Boost-Projektes. Dort suchen Sie sich Ihren Shop aus und machen wie gewohnt Ihren Einkauf. Das ist alles. Wenn genug Menschen dies tun, dann brauchen wir keine Werbung mehr. Nur zwei Mausklicks f&uuml;r Sie - f&uuml;r alle eine Chance f&uuml;r den freien Wissenszugang in der digitalen Welt.'
+];
\ No newline at end of file
diff --git a/resources/lang/de/staticPages.php b/resources/lang/de/staticPages.php
index af509b94c0de23128921167cf10fbb33d8bdec23..0adea0d775f15af68c03bd89c7c9eadc92eb52bd 100644
--- a/resources/lang/de/staticPages.php
+++ b/resources/lang/de/staticPages.php
@@ -1,22 +1,25 @@
 <?php
 
 return [
-	'nav1' => 'Suche',
-	'nav2' => 'Spenden',
-	'nav3' => 'Datenschutz',
-	'nav4' => 'Forum',
-	'nav5' => 'Kontakt',
-	'nav6' => 'Team',
-	'nav7' => 'Ãœber uns',
-	'nav8' => 'Impressum',
-	'nav9' => 'Hilfe',
-	'nav10' => 'Widget',
-	'nav11' => 'Assoziator',
-	'nav12' => 'Code-Suche',
-	'nav13' => 'URL-Verkürzer',
-	'nav14' => 'TOR-Hidden-Service',
-	'nav15' => 'Dienste',
-	'nav16' => 'Fördern',
-	'nav17' => 'Einkaufen bei MetaGer-Fördershops',
-	'nav18' => 'Kontakt'
+	'nav1' 				=> 'Suche',
+	'nav2' 				=> 'Spenden',
+	'nav3' 				=> 'Datenschutz',
+	'nav4' 				=> 'Forum',
+	'nav5' 				=> 'Kontakt',
+	'nav6' 				=> 'Team',
+	'nav7' 				=> 'Ãœber uns',
+	'nav8' 				=> 'Impressum',
+	'nav9' 				=> 'Hilfe',
+	'nav10' 			=> 'Widget',
+	'nav11' 			=> 'Assoziator',
+	'nav12' 			=> 'Code-Suche',
+	'nav13' 			=> 'URL-Verkürzer',
+	'nav14' 			=> 'TOR-Hidden-Service',
+	'nav15' 			=> 'Dienste',
+	'nav16' 			=> 'Fördern',
+	'nav17' 			=> 'Einkaufen bei MetaGer-Fördershops',
+	'nav18' 			=> 'Kontakt',
+	'navigationToggle'	=> 'Navigation anzeigen',
+	'sumaev.1'			=>	'MetaGer wird entwickelt und betrieben vom ',
+	'sumaev.2'			=>	'SUMA-EV - Verein für freien Wissenszugang.'
 ];
\ No newline at end of file
diff --git a/resources/lang/de/team.php b/resources/lang/de/team.php
new file mode 100644
index 0000000000000000000000000000000000000000..33cd168599885ef681b220f93333af0c540bde12
--- /dev/null
+++ b/resources/lang/de/team.php
@@ -0,0 +1,21 @@
+<?php
+
+return [
+	'role.1' => 'Geschäftsführer, Vorstand',
+	'role.2' => 'Büroleiter und Jugendschutzbeauftragter',
+	'role.3' => 'Pressereferentin',
+	'role.4' => 'Programmierer',
+	'role.5' => 'Programmierer',
+	'role.6' => 'Programmierer',
+	'role.7' => 'Sekretariat',
+
+	'contact.1' => 'Fragen/Probleme zu MetaGer etc. bitte immer an',
+	'contact.2' => 'mailen, oder das',
+	'contact.3' => 'Kontaktformular mit Verschlüsselung',
+	'contact.4' => 'benutzten, oder am besten: ins',
+	'contact.5' => 'MetaGer-Forum',
+	'contact.6' => 'schreiben. Wir können bei der Vielzahl der Anfragen nicht immer zeitnah antworten - im',
+	'contact.7' => 'MetaGer-Forum',
+	'contact.8' => 'können Ihnen wahrscheinlich auch andere MetaGer-Nutzer weiterhelfen, und von den Fragen und Antworten profitieren ALLE.',
+	'contact.9' => 'Nur in begründeten Ausnahmefällen, wenn Sie bestimmte Personen direkt erreichen wollen, sollten Sie an diese mailen. Denn Team-Mitglieder können Urlaub haben, krank sein usw.',
+];
\ No newline at end of file
diff --git a/resources/lang/en/datenschutz.php b/resources/lang/en/datenschutz.php
new file mode 100644
index 0000000000000000000000000000000000000000..04db7282ca0657a82edf35ab74cf015b8fce450a
--- /dev/null
+++ b/resources/lang/en/datenschutz.php
@@ -0,0 +1,33 @@
+<?php
+
+return [
+	'head' => 'Privacy',
+
+	'general.1' => 'For us Privacy is one of the most important goods on the internet. It needs to be preserved and is not to be used for profit. The following is a small list of our approach. A more detailed description why we are the only real secure search engine can be found',
+	'general.2' => 'here',
+
+	'policy.1' => 'Our Approach/Policy:',
+	'policy.2' => 'Neither do we save your IP, nor the',
+	'policy.3' => '"fingerprint" of your Browser',
+	'policy.4' => '(Which most likely could identify you aswell).',
+	'policy.5' => 'We do not set cookies or use tracking-pixel or similar technology, to "track" our users (tracking = following a users digital movement on the internet).',
+	'policy.6' => 'The data transmission from MetaGer is only done encrypted via the https-protocol.',
+	'policy.7' => 'We offer access via the anonymous TOR-network, the',
+	'policy.8' => 'MetaGer-TOR-hidden Service.',
+	'policy.9' => 'Since the access via the TOR-network seems complicated to many users and sometimes is also slow, we offer a different way, to visit the result pages anonymously: By clicking on the link "open anonymously". Doing this your personal information will be protected on this click and even on all following clicks.',
+	'policy.10' => 'We show as few advertisements as possible, clearly marking them, and as for financing we rely on our users. Your',
+	'policy.11' => 'Donations',
+	'policy.12' => 'and subscriptions to',
+	'policy.13' => 'Metager is operated and developed by the charitable german Organisation',
+	'policy.14' => 'in Cooperation with the',
+	'policy.15' => 'Leibniz Universit&auml;t Hannover',
+	'policy.16' => '.',
+	'policy.17' => 'Our Servers are exclusively located in germany. Therefore they are governed by the german privacy law, which is said to be the most rigorous in the world.',
+	'policy.18' => 'Since the',
+	'policy.19' => 'revealments of Edward Snowden in June 2013',
+	'policy.20' => 'numerous search engines position with the self-description, that searching with them was save, because the user\'s IP adress was not saved. No matter how honourable these descriptions are - fact is that many search engines at least partially host their servers in the USA. This is also true for those search engines, which are still praised as recommendable. Because these search engines are,',
+	'policy.21' => 'as per the Patriot Act and US law',
+	'policy.22' => ', fully unprotected against the access of local authorities. Thus they cannot provide protection of personal data (even if they really try to).',
+
+	'twitter' => 'What others say about our privacy-concept on twitter:',
+];
\ No newline at end of file
diff --git a/resources/lang/en/fokiNames.php b/resources/lang/en/fokiNames.php
new file mode 100644
index 0000000000000000000000000000000000000000..a7e8fcc4f7b704dcb68993ccfe0dca6e9495aba5
--- /dev/null
+++ b/resources/lang/en/fokiNames.php
@@ -0,0 +1,10 @@
+<?php
+
+return [
+	'web' 		=>	"web",
+	'news'		=>	"nachrichten",
+	'science'	=>	'wissenschaft',
+	'shopping'	=>	'produktsuche',
+	'picture'	=>	'bilder',
+	'custom'	=>	'angepasst'
+];
\ No newline at end of file
diff --git a/resources/lang/en/impressum.php b/resources/lang/en/impressum.php
new file mode 100644
index 0000000000000000000000000000000000000000..96ec7c3ea1297077040578d9897f80c1951ac8c1
--- /dev/null
+++ b/resources/lang/en/impressum.php
@@ -0,0 +1,20 @@
+<?php
+
+return [
+	'headline.1' => 'SUMA-EV - Verein für freien Wissenszugang (e.V.)',
+	'headline.2' => 'in cooperation with the',
+
+	'info.1' => 'Wikipedia-entry for the',
+	'info.2' => 'Contact',
+	'info.3' => 'encrypted contact form',
+	'info.4' => 'Board',
+	'info.5' => 'Management',
+	'info.6' => 'Youth Protection Commissioner',
+	'info.7' => 'Liable for the content as per § 55 Abs. 2 RStV',
+	'info.8' => 'is a charitable association, registered in the register of associations at the Amtsgericht Hannover
+under',
+	'info.9' => 'sales tax identification number',
+	'info.10' => 'The "Gottfried Wilhelm Leibniz Universität Hannover" is a statutory body.',
+	'info.11' => 'Liability Note',
+	'info.12' => 'Despite thorough content control we do not take responsability for any content of external links. For the content of external links only their operators are reliable.',
+];
\ No newline at end of file
diff --git a/resources/lang/en/index.php b/resources/lang/en/index.php
new file mode 100644
index 0000000000000000000000000000000000000000..ce9902d44946bfa0e4c3a2e8c75804d6e3525606
--- /dev/null
+++ b/resources/lang/en/index.php
@@ -0,0 +1,21 @@
+<?php
+
+return [
+	'foki.bilder'			=>	'Pictures',
+	'foki.nachrichten'		=>	'News',
+	'foki.wissenschaft'		=>	'Science',
+	'foki.produkte'			=>	'Shopping',
+	'foki.anpassen'			=>	'customize',
+	'conveyor'				=>	'Purchase at supporting MetaGer Shops',
+	'plugin'				=>	'add the MetaGer-Plugin',
+	'sponsors'				=>	'',
+	'sponsors.woxikon'		=>	'',
+	'sponsors.gutscheine'	=>	'',
+	'sponsors.kredite'		=>	'',
+	'about.title'			=>	'About us',
+	'about.1.1'				=>	'Data protection & privacy',
+	'about.1.2'				=>	'  are simple and natural for us.',
+	'about.2.1'				=>	'We do not work for profit. We are a ',
+	'about.2.2'				=>	'non-profit association. '
+
+];
\ No newline at end of file
diff --git a/resources/lang/en/spenden.php b/resources/lang/en/spenden.php
new file mode 100644
index 0000000000000000000000000000000000000000..a86c57c5238b72382ed3478d1f8e6f5e0f1d5b9a
--- /dev/null
+++ b/resources/lang/en/spenden.php
@@ -0,0 +1,50 @@
+<?php
+
+return [
+	'headline.1' => 'Your Donation for SUMA-EV and MetaGer',
+	'headline.2' => 'Help us keep open search engines stay open on the internet. The digital knowledge of the world must stay free from state or concern paternalism and be publicly accessible.',
+
+	'bankinfo.1' => 'By bank transfer',
+	'bankinfo.2' => 'SUMA-EV
+IBAN: DE64 4306 0967 4075 0332 01
+BIC: GENODEM1GLS
+(Account-No.: 4075 0332 01, Bank Code: 43060967)
+GLS Gemeinschaftsbank, Bochum',
+	'bankinfo.3' => 'If you wish to receive a donation receipt, 
+please specify your full adress and (if available) 
+your E-Mail adress on the money transfer form.',
+
+	'logos.1' => 'Comfortably with Paypal',
+	'logos.2' => 'or Bitcoins',
+
+	'lastschrift.1' => 'Donate by wire transfer',
+	'lastschrift.2' => 'Enter your account data along with the desired amount. We will debit your bank account accordingly.',
+	'lastschrift.3' => 'Please enter your name:',
+	'lastschrift.3.placeholder' => 'name',
+	'lastschrift.4' => 'Your E-Mail adress:',
+	'lastschrift.5' => 'Your phone number to verify your donation by callback:',
+	'lastschrift.6' => 'Your IBAN or bank account number:',
+	'lastschrift.7' => 'Your BIC or bank code:',
+	'lastschrift.8' => 'Here you can informally tell us, what amount you want to donate monthly and perhaps send a message with it',
+	'lastschrift.8.placeholder' => 'message',
+	'lastschrift.9' => 'Donate',
+	'lastschrift.10' => 'Your information is transmitted encrypted and is not read by a third party. The amount you enter will be debited from your account by us. SUMA-EV only uses your information for accounting; Your information is not passed on. Donations to the SUMA-EV are tax-deductible, because the association is recognized as charitable by the Finanzamt Hannover Nord (revenue board), listed in the register of associations, Amtsgericht Hannover under VR200033. A certificate for single donations above 200,-EUR is sent automatically. For donations below 200,-EUR an account current is enough for tax-deduction.',
+
+	'about.0' => 'About us',
+	'about.1.1' => 'The german search engine MetaGer is operated and constantly refined by the SUMA-EV - Verein f&uuml;r freien Wissenszugang. We are a charitable association, one of our goals is the development and operation of search engines. We do not receive any public funds and therefore are relying on your donations. 
+Help us preserve and develop open search engines on the internet. 
+You can do this by donating on our website. Or if you want to help open search engines on the long run:',
+	'about.1.2' => 'Become a SUMA-EV member',
+	'about.2.1' => 'If you donate more than 50,-EUR or become a member of the',
+	'about.2.2' => ', you get to namely appear on our',
+	'about.2.3' => 'members and sponsors page',
+	'about.2.4' => 'with your homepage (if avaylable). (If you want this, please tell us in your donation message.)',
+	'about.2.5' => 'Or become SUMA-EV sponsor!',
+	'about.3.1' => 'Every form of support',
+	'about.3.2' => 'helps open search engines and open knowledge access to have a chance on the internet. Open Knowledge access also includes that neither your information is monitored, nor your internet adresses and connection data is collected. We anonymise your internet adress during search, it is not stored and not passed on. Open internet search without surveillance:',
+	'about.4.1' => 'Another possibility to help MetaGer is to make your next online purchase at a MetaGer support shop. We became part of the',
+	'about.4.2' => 'to be able to be helped this way. The project unites around 400 online shops (from Amazon to Zooplus), that all declared to donate around 6% of every sale. Instead of directly browsing the online shop, use this link next time: ',
+	'about.4.3' => 'and click below the search term box on',
+	'about.4.4' => 'Make your purchase at MetaGer support shops - click here!',
+	'about.4.5' => 'This click brings you to the boost project shop selection. There you choose your shop and keep on shopping as usual. That is all. If enough people do this, we do not need ads anymore. Just two clicks for you - a chance for open knowledge access for the digital world.'
+];
\ No newline at end of file
diff --git a/resources/lang/en/staticPages.php b/resources/lang/en/staticPages.php
index f28c75ca9d2307936f9c0c3c6ffc904138f1f8f6..9b7198d474c84eac14130b86213f900339d96a91 100644
--- a/resources/lang/en/staticPages.php
+++ b/resources/lang/en/staticPages.php
@@ -18,5 +18,8 @@ return [
 	'nav15' => 'Tools',
 	'nav16' => 'Support',
 	'nav17' => 'Purchase at MetaGer Supporting Shops',
-	'nav18' => 'Contact'
+	'nav18' => 'Contact',
+	'navigationToggle'	=> 'show navigation',
+	'sumaev.1'			=>	'MetaGer is developed and run by ',
+	'sumaev.2'			=>	'SUMA-EV - Association for Free Access to Knowledge.'
 ];
\ No newline at end of file
diff --git a/resources/lang/en/team.php b/resources/lang/en/team.php
new file mode 100644
index 0000000000000000000000000000000000000000..159ce1ca610f908c8af259d3cee5dfb3e328b755
--- /dev/null
+++ b/resources/lang/en/team.php
@@ -0,0 +1,21 @@
+<?php
+
+return [
+	'role.1' => 'chief executive, chairman',
+	'role.2' => 'office supervisor und youth protection commissioner',
+	'role.3' => 'press secretary',
+	'role.4' => 'programmer',
+	'role.5' => 'programmer',
+	'role.6' => 'programmer',
+	'role.7' => 'secretary',
+
+	'contact.1' => 'Please mail your questions/problems about MetaGer etc. to',
+	'contact.2' => 'or use the',
+	'contact.3' => 'contact form with encryption',
+	'contact.4' => ', or preferably make a post in the',
+	'contact.5' => 'MetaGer-forum.',
+	'contact.6' => 'Due to the amount of requests, we can not always answer promptly - in the',
+	'contact.7' => 'MetaGer-forum',
+	'contact.8' => 'there are probably other users which can help you aswell, and the questions and answers benefit EVERYONE.',
+	'contact.9' => 'Only in reasoned exceptions, if you want to rech someone directly, you should mail them. Because team members might be on vacation, sick etc.',
+];
\ No newline at end of file
diff --git a/resources/views/datenschutz.blade.php b/resources/views/datenschutz.blade.php
index b4896931bc066738b3a3a496f65eba59cdc64050..0db0c2a86da48a8d7993400e3bda1e9488d82637 100644
--- a/resources/views/datenschutz.blade.php
+++ b/resources/views/datenschutz.blade.php
@@ -3,20 +3,20 @@
 @section('title', $title )
 
 @section('content')
-        <h1>Datenschutz und Privatsph&auml;re</h1>
-        <p>Datenschutz und Privatsph&auml;re geh&ouml;ren f&uuml;r uns zu den wichtigsten G&uuml;tern im Internet. Sie sind absolut sch&uuml;tzenswert und d&uuml;rfen keinesfalls kommerziell genutzt werden. Im Folgenden eine kurze Auflistung unserer Vorgehensweise. Eine ausf&uuml;hrliche Darstellung mit Hintergrund-Informationen, warum wir die einzige wirklich sichere Suchmaschine betreiben, finden Sie <a href="https://suma-ev.de/presse/Sicher-suchen-UND-finden-mit-MetaGer.html">hier</a></p>
-        <h2>Unsere Vorgehensweise/Policy:</h2>
-        <ul id="privacyList"><li>Wir speichern weder Ihre IP-Adresse, noch den <a href="http://www.heise.de/security/meldung/Fingerprinting-Viele-Browser-sind-ohne-Cookies-identifizierbar-1982976.html" target="_blank">"Fingerabdruck" Ihres Browsers</a> (der Sie mit hoher Wahrscheinlichkeit ebenfalls eindeutig identifizieren k&ouml;nnte).</li>
-          <li>Wir setzen keine Cookies oder benutzen Tracking-Pixel oder &auml;hnliche Technologien, um unsere Nutzer zu "tracken" (tracken = Verfolgen der Bewegungen im Internet).</li>
-          <li>Die Daten&uuml;bertragung von MetaGer erfolgt ausschlie&szlig;lich automatisch verschl&uuml;sselt &uuml;ber das https-Protokoll.</li>
-          <li>Wir bieten einen Zugang &uuml;ber das anonyme TOR-Netzwerk, den 
-            <a href="http://forum.suma-ev.de/viewtopic.php?f=3&amp;t=43&amp;sid=c994b628153235dfef098ba6fea3d60e" target="_blank">MetaGer-TOR-hidden Service.</a></li>
-          <li>Da der Zugang &uuml;ber das TOR-Netzwerk vielen Nutzern kompliziert erscheint, manchmal auch langsam ist, haben wir einen weiteren Weg implementiert, auch die Ergebnis-Webseiten ebenfalls anonym erreichen zu k&ouml;nnen: durch Anklicken des Links "anonym &ouml;ffnen". Dadurch sind Ihre pers&ouml;nlichen Daten beim Klick auf MetaGer-Ergebnisse und sogar bei allen Folge-Klicks danach gesch&uuml;tzt.</li>
-          <li>Wir machen m&ouml;glichst wenig Werbung, kennzeichnen diese klar und eindeutig, und vertrauen f&uuml;r unsere Finanzierung auf unsere Nutzer, Ihre <a href="/spende/">Spenden</a> und Mitgliedsbetr&auml;ge zum <a href="http://suma-ev.de/" target="_blank">SUMA-EV</a></li>
-          <li>MetaGer wird von der deutschen gemeinn&uuml;tzigen Organisation <a href="http://suma-ev.de/" target="_blank">SUMA-EV</a> in Zusammenarbeit mit der <a href="http://www.uni-hannover.de/" target="_blank">Leibniz Universit&auml;t Hannover</a> betrieben und weiterentwickelt.</li>
-          <li>Unsere Server stehen ausschlie&szlig;lich in Deutschland. Sie unterliegen damit vollst&auml;ndig deutschem Datenschutzrecht, welches als das h&auml;rteste der Welt gilt.</li>
-          <li>Nach den <a href="http://www.heise.de/newsticker/meldung/Bericht-US-Regierung-zapft-Kundendaten-von-Internet-Firmen-an-1884264.html" target="_blank">Enth&uuml;llungen von Edward Snowden im Juni 2013</a> positionierten sich etliche Suchmaschinen mit der Selbstbeschreibung, dass Suchen bei ihnen sicher sei, weil die IP-Adressen der Nutzer nicht gespeichert w&uuml;rden. So ehrenwert und auch ehrlich gemeint diese Selbstbeschreibungen sein m&ouml;gen - Fakt ist, dass viele dieser Suchmaschinen zumindest einen Teil ihrer Server in den USA hosten. Das gilt auch f&uuml;r diejenigen, die von manchen Datensch&uuml;tzern immer noch als "besonders empfehlenswert" gelobt und als Empfehlung verbreitet werden. Denn diese Suchmaschinen <a href="http://de.wikipedia.org/wiki/USA_PATRIOT_Act" target="_blank">unterliegen nach dem Patriot Act und US-Recht dem vollen Zugriff der dortigen Beh&ouml;rden.</a> Sie k&ouml;nnen also gar keine gesch&uuml;tzte Privatsph&auml;re bieten (selbst dann nicht, wenn sie selber sich noch so sehr darum bem&uuml;hen).</li></ul>
-        <h2>Was andere &uuml;ber unser Privacy-Konzept auf Twitter sagen:</h2>
+        <h1>{{ trans('datenschutz.head') }}</h1>
+        <p>{{ trans('datenschutz.general.1') }} <a href="https://suma-ev.de/presse/Sicher-suchen-UND-finden-mit-MetaGer.html">{{ trans('datenschutz.general.2') }}</a></p>
+        <h2>{{ trans('datenschutz.policy.1') }}</h2>
+        <ul id="privacyList"><li>{{ trans('datenschutz.policy.2') }} <a href="http://www.heise.de/security/meldung/Fingerprinting-Viele-Browser-sind-ohne-Cookies-identifizierbar-1982976.html" target="_blank">{{ trans('datenschutz.policy.3') }}</a> {{ trans('datenschutz.policy.4') }}</li>
+          <li>{{ trans('datenschutz.policy.5') }}</li>
+          <li>{{ trans('datenschutz.policy.6') }}</li>
+          <li>{{ trans('datenschutz.policy.7') }} 
+            <a href="http://forum.suma-ev.de/viewtopic.php?f=3&amp;t=43&amp;sid=c994b628153235dfef098ba6fea3d60e" target="_blank">{{ trans('datenschutz.policy.8') }}</a></li>
+          <li>{{ trans('datenschutz.policy.9') }}</li>
+          <li>{{ trans('datenschutz.policy.10') }} <a href="/spende/">{{ trans('datenschutz.policy.11') }}</a> {{ trans('datenschutz.policy.12') }} <a href="http://suma-ev.de/" target="_blank">SUMA-EV</a>.</li>
+          <li>{{ trans('datenschutz.policy.13') }} <a href="http://suma-ev.de/" target="_blank">SUMA-EV</a> {{ trans('datenschutz.policy.14') }} <a href="http://www.uni-hannover.de/" target="_blank">{{ trans('datenschutz.policy.15') }}</a> {{ trans('datenschutz.policy.16') }}</li>
+          <li>{{ trans('datenschutz.policy.17') }}</li>
+          <li>{{ trans('datenschutz.policy.18') }} <a href="http://www.heise.de/newsticker/meldung/Bericht-US-Regierung-zapft-Kundendaten-von-Internet-Firmen-an-1884264.html" target="_blank">{{ trans('datenschutz.policy.19') }}</a> {{ trans('datenschutz.policy.20') }} <a href="http://de.wikipedia.org/wiki/USA_PATRIOT_Act" target="_blank">{{ trans('datenschutz.policy.21') }}</a> {{ trans('datenschutz.policy.22') }}</li></ul>
+        <h2>{{ trans('datenschutz.twitter') }}</h2>
         <pre><p>&gt; 7.4.2014 C. Schulzki-Haddouti @kooptech
 &gt; MetaGer d&uuml;rfte im Moment die sicherste Suchmaschine weltweit sein</p>
 <p>&gt; 8.4.2014 Stiftung Datenschutz @DS_Stiftung
diff --git a/resources/views/impressum.blade.php b/resources/views/impressum.blade.php
index 8e7053b868cde6d8a89ed13a754e6a46ff5dc187..5372509da26367ab91b2ffa09cdfb91e83587b76 100644
--- a/resources/views/impressum.blade.php
+++ b/resources/views/impressum.blade.php
@@ -3,57 +3,38 @@
 @section('title', $title )
 
 @section('content')
-<h1>Impressum
-</h1>
-<h2>
-  <a href="http://suma-ev.de/" target="_blank">SUMA-EV - Verein für freien Wissenszugang (e.V.)
-  </a>
-</h2>
-<h2>in Kooperation mit der 
-  <a href="http://www.uni-hannover.de/" target="_blank">Leibniz Universität Hannover
-  </a>
-</h2>
-<p>Wikipedia-Eintrag zum <a href="http://de.wikipedia.org/wiki/Suma_e.V." target="_blank">SUMA-EV</a></p>
-  <address>SUMA-EV
+<h1>Impressum</h1>
+<h2><a href="http://suma-ev.de/" target="_blank">{{ trans('impressum.headline.1') }}</a></h2>
+<h2>{{ trans('impressum.headline.2') }} <a href="http://www.uni-hannover.de/" target="_blank">Leibniz Universität Hannover</a></h2>
+<p>{{ trans('impressum.info.1') }} <a href="http://de.wikipedia.org/wiki/Suma_e.V." target="_blank">SUMA-EV</a></p>
+<address>SUMA-EV
 Röselerstr. 3
 D-30159 Hannover
 Deutschland/Germany
 </address>
-<address>Kontakt:
-  Tel.: ++49-(0)511-34000070
-  EMail: <a href="mailto:office@suma-ev.de">office@suma-ev.de</a><a href="/kontakt/"> - Public-PGP-Key</a>
-  <a href="/kontakt/">Verschlüsselndes Kontakformular</a>
+<address>{{ trans('impressum.info.2') }}:
+Tel.: ++49-(0)511-34000070
+EMail: <a href="mailto:office@suma-ev.de">office@suma-ev.de</a><a href="/kontakt/"> - Public-PGP-Key</a>
+<a href="/kontakt/">{{ trans('impressum.info.3') }}</a>
 </address>
-<p>Vorstand:
-  <a href="http://www.intares.de/service_provider_info/management.html">Dr. Bernhard Biedermann</a>, 
-  <a href="http://www.nebel.de/unternehmen/vita.shtml">Michael Nebel</a>, 
-  <a href="http://de.wikipedia.org/wiki/Wolfgang_Sander-Beuermann">Dr. Wolfgang Sander-Beuermann</a>
+<p>{{ trans('impressum.info.4') }}:
+<a href="http://www.intares.de/service_provider_info/management.html">Dr. Bernhard Biedermann</a>, <a href="http://www.nebel.de/unternehmen/vita.shtml">Michael Nebel</a>, <a href="http://de.wikipedia.org/wiki/Wolfgang_Sander-Beuermann">Dr. Wolfgang Sander-Beuermann</a></p>
+<p>{{ trans('impressum.info.5') }}:
+<a href="http://de.wikipedia.org/wiki/Wolfgang_Sander-Beuermann">Dr. Wolfgang Sander-Beuermann</a>
+Public-PGP-Key: <a href="https://metager.de/team/pubkey-wsb.txt%0A">https://metager.de/team/pubkey-wsb.txt</a>
+Facebook: <a href="https://www.facebook.com/wolfgang.sanderbeuermann%0A">https://www.facebook.com/wolfgang.sanderbeuermann</a>
+Twitter: <a href="http://twitter.com/wosabeu">http://twitter.com/wosabeu</a>
 </p>
-<p>Geschäftsführung:
-  <a href="http://de.wikipedia.org/wiki/Wolfgang_Sander-Beuermann">Dr. Wolfgang Sander-Beuermann</a>
-  Public-PGP-Key: <a href="https://metager.de/team/pubkey-wsb.txt%0A">https://metager.de/team/pubkey-wsb.txt</a>
-  Facebook: <a href="https://www.facebook.com/wolfgang.sanderbeuermann%0A">https://www.facebook.com/wolfgang.sanderbeuermann</a>
-  Twitter: <a href="http://twitter.com/wosabeu">http://twitter.com/wosabeu</a>
+<p>{{ trans('impressum.info.6') }}: Georg Becker
+<a href="mailto:jugendschutz@metager.de">jugendschutz@metager.de</a>
 </p>
-<p>Jugendschutzbeauftragter: Georg Becker
-  <a href="mailto:jugendschutz@metager.de">jugendschutz@metager.de
-  </a>
-</p>
-<p>Inhaltlich Verantwortlicher gemäß § 55 Abs. 2 RStV:
-  <a href="http://de.wikipedia.org/wiki/Wolfgang_Sander-Beuermann">Dr. Wolfgang Sander-Beuermann
-  </a>
-</p>
-<p> "SUMA-EV - Verein für freien Wissenszugang" ist ein gemeinnütziger
-  Verein, eingetragen in das Vereinsregister beim Amtsgericht Hannover
-  unter VR200033.
+<p>{{ trans('impressum.info.7') }}:
+<a href="http://de.wikipedia.org/wiki/Wolfgang_Sander-Beuermann">Dr. Wolfgang Sander-Beuermann</a></p>
+<p>"SUMA-EV - Verein für freien Wissenszugang" {{ trans('impressum.info.8') }} VR200033.
 
-  Umsatzsteueridentifikationsnummer: DE 300 464 091
-  
-  Die "Gottfried Wilhelm Leibniz Universität Hannover" ist eine
-  Körperschaft des öffentlichen Rechts.
-</p>
-<h2>Haftungshinweis:
-</h2>
-<p>Trotz sorgfältiger inhaltlicher Kontrolle übernehmen wir keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
-</p>
+{{ trans('impressum.info.9') }}: DE 300 464 091
+
+{{ trans('impressum.info.10') }}</p>
+<h2>{{ trans('impressum.info.11') }}:</h2>
+<p>{{ trans('impressum.info.12') }}</p>
 @endsection
\ No newline at end of file
diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php
index 395fd6db77fea94b68bce47edeadeadc3dd4aee3..89d2474f278d57283621303ea2fd9275519362c9 100644
--- a/resources/views/index.blade.php
+++ b/resources/views/index.blade.php
@@ -36,28 +36,28 @@
               <label id="bilder-label" for="bilder">
                 <span class="glyphicon glyphicon-picture">
                 </span>
-                <span class="content">Bilder
+                <span class="content">{{ trans('index.foki.bilder') }}
                 </span>
               </label>
               <input id="nachrichten" type="radio" name="focus" value="nachrichten" form="searchForm" required="">
               <label id="nachrichten-label" for="nachrichten">
                 <span class="glyphicon glyphicon-bullhorn">
                 </span>
-                <span class="content">Nachrichten
+                <span class="content">{{ trans('index.foki.nachrichten') }}
                 </span>
               </label>
               <input id="wissenschaft" type="radio" name="focus" value="wissenschaft" form="searchForm" required="">
               <label id="wissenschaft-label" for="wissenschaft">
                 <span class="glyphicon glyphicon-file">
                 </span>
-                <span class="content">Wissenschaft
+                <span class="content">{{ trans('index.foki.wissenschaft') }}
                 </span>
               </label>
               <input id="produkte" type="radio" name="focus" value="produktsuche" form="searchForm" required="">
               <label id="produkte-label" for="produkte">
                 <span class="glyphicon glyphicon-shopping-cart">
                 </span>
-                <span class="content">Produkte
+                <span class="content">{{ trans('index.foki.produkte') }}
                 </span>
               </label>
               <input id="angepasst" type="radio" name="focus" value="angepasst" form="searchForm" required="">
@@ -65,7 +65,7 @@
                 <span class="glyphicon glyphicon-cog">
                 </span>
                 <span class="content">
-                  <a href="/settings/">anpassen
+                  <a href="/settings/">{{ trans('index.foki.anpassen') }}
                   </a>
                 </span>
               </label>
@@ -106,13 +106,13 @@
             </fieldset>
             <ul class="list-inline">
               <li>
-                <a href="https://www.boost-project.com/de/shops?charity_id=1129&amp;tag=bl" target="_blank" id="foerdershops">Einkaufen bei MetaGer-F&ouml;rdershops
+                <a href="https://www.boost-project.com/de/shops?charity_id=1129&amp;tag=bl" target="_blank" id="foerdershops">{{ trans('index.conveyor') }}
                 </a>
               </li>
               <li class="hidden-xs seperator">|
               </li>
               <li id="plug">
-                <a href="#" id="plugin" data-toggle="modal" data-target="#plugin-modal">MetaGer-Plugin hinzuf&uuml;gen
+                <a href="#" id="plugin" data-toggle="modal" data-target="#plugin-modal">{{ trans('index.plugin') }}
                 </a>
               </li>
             </ul>
@@ -126,36 +126,33 @@
           </h1>
           <div class="row">
             <div id="sponsors" class="col-md-6 col-sm12">
-              <h2>Sponsoren
+              <h2>{{ trans('index.sponsors') }}
               </h2>
               <ul>
                 <li>
-                  <a href="http://www.woxikon.de/" class="mutelink" target="_blank">Woxikon: Nach W&ouml;rtern &amp; Synonymen suchen
+                  <a href="http://www.woxikon.de/" class="mutelink" target="_blank">{{ trans('index.sponsors.woxikon') }}
                   </a>
                 </li>
                 <li>
-                  <a href="http://www.gutschein-magazin.de/" class="mutelink" target="_blank">Aktuelle Gutscheine auf Gutschein-Magazin.de
+                  <a href="http://www.gutschein-magazin.de/" class="mutelink" target="_blank">{{ trans('index.sponsors.gutscheine') }}
                   </a>
                 </li>
                 <li>
-                  <a href="https://www.finanzcheck.de/" class="mutelink" target="_blank">G&uuml;nstige Kredite auf FINANZCHECK.de vergleichen
+                  <a href="https://www.finanzcheck.de/" class="mutelink" target="_blank">{{ trans('index.sponsors.kredite') }}
                   </a>
                 </li>
               </ul>
             </div>
             <div class="col-md-6 col-sm-12">
               <h2>
-                <a href="/about/">&Uuml;ber uns
+                <a href="/about/">{{ trans('index.about.title') }}
                 </a>
               </h2>
               <ul>
                 <li>
-                  <a href="/datenschutz/">Datenschutz &amp; Privatsph&auml;re
-                  </a> sind bei uns einfach &amp; selbstverst&auml;ndlich.
+                  <a href="/datenschutz/">{{ trans('index.about.1.1') }}</a>{{ trans('index.about.1.2') }}
                 </li>
-                <li>Wir arbeiten nicht gewinnorientiert, wir sind ein 
-                  <a href="/spende/">gemeinn&uuml;tziger Verein.
-                  </a>
+                <li>{{ trans('index.about.2.1') }}<a href="/spende/">{{ trans('index.about.2.2') }}</a>
                 </li>
               </ul>
             </div>
diff --git a/resources/views/kontakt/kontakt.blade.php b/resources/views/kontakt/kontakt.blade.php
index 47a28f2c041d9c8c77b0a651dda3b3d9d869d100..6fa0a85c8befbacb6ca836b0e4f0002c51fdc3d4 100644
--- a/resources/views/kontakt/kontakt.blade.php
+++ b/resources/views/kontakt/kontakt.blade.php
@@ -3,37 +3,26 @@
 @section('title', $title )
 
 @section('content')
-<h1>Kontakt
-</h1>
-<h2>Forum
-</h2>
+<h1>Kontakt</h1>
+<h2>Forum</h2>
 <p><span class="bold">Bitte stellen Sie Ihre Frage zuerst in unserem <a href="http://forum.suma-ev.de/" target="_blank">Forum.</a></span>
 <span>So können auch andere von einer Antwort profitieren.</span></p>
 <h2>Sicheres Kontakformular</h2>
 <p>Über dieses Formular können Sie uns verschlüsselt kontaktieren.
-Alternativ können Sie uns natürlich auch per <a href="mailto:office@suma-ev.de">email</a> erreichen.
-</p>
-<p>Beachten Sie: Aufgrund der Vielzahl der Anfragen sind wir personell nicht immer in der Lage, alles zeitnah zu beantworten.
-</p>
-<p class="bold">Wenn Sie keine email-Adresse angeben, können wir Ihnen nicht antworten.
-</p>
+Alternativ können Sie uns natürlich auch per <a href="mailto:office@suma-ev.de">email</a> erreichen.</p>
+<p>Beachten Sie: Aufgrund der Vielzahl der Anfragen sind wir personell nicht immer in der Lage, alles zeitnah zu beantworten.</p>
+<p class="bold">Wenn Sie keine email-Adresse angeben, können wir Ihnen nicht antworten.</p>
 <form class="contact" name="contact" method="post" action="{{ LaravelLocalization::getLocalizedURL() }}">
   {{ csrf_field() }}
   <div class="form-group">
-    <input class="form-control" name="email" placeholder="Ihre e-mail-Adresse (optional)" type="text">
-  </div>
+    <input class="form-control" name="email" placeholder="Ihre e-mail-Adresse (optional)" type="text"></div>
   <div class="form-group">
-    <textarea class="form-control" id="message" name="message" placeholder="Ihre Nachricht"></textarea>
-  </div>
+    <textarea class="form-control" id="message" name="message" placeholder="Ihre Nachricht"></textarea></div>
   <div class="form-group">
     <p><span class="bold">Ihre Nachricht wird vor dem Absenden mit <a href="http://openpgpjs.org/.">OpenPGP.js</a> verschlüsselt. 
 Dafür wird Javascript benötigt.</span>
-<span>Falls Sie Javascript deaktiviert haben, wird Ihre Eingabe unverschlüsselt gesendet.</span>
-    </p>
-    <button title="" data-original-title="" class="btn btn-default" type="submit">Verschlüsseln und senden
-    </button>
-  </div>
-</form>
+<span>Falls Sie Javascript deaktiviert haben, wird Ihre Eingabe unverschlüsselt gesendet.</span></p>
+    <button title="" data-original-title="" class="btn btn-default" type="submit">Verschlüsseln und senden</button></div></form>
 <h2>Per E-Mail</h2>
 <p>Sie können uns auch direkt eine e-mail an die folgende Adresse schicken: <a href="mailto:office@suma-ev.de">office@suma-ev.de</a>
 Falls Sie diese verschlüsseln wollen, finden Sie nachfolgend unseren öffentlichen OpenPGP-Schlüssel:</p>
@@ -100,16 +89,12 @@ geiG3j1J/CaDBZqPBaBflK0UWR5nxCsoOk7i5f3isUeXSVLTnA+K9HkQ6D/Gt5vx
 2soXShIyIak9DeUifcuf1w/ZpL8MXCMDZ2LN2jYVJB8c4g==
 =LZAA
 -----END PGP PUBLIC KEY BLOCK-----</code>
-<h2>Per Brief-Post
-</h2>
+<h2>Per Brief-Post</h2>
 <p>Wir ziehen es vor, auf digitalem Wege kontaktiert zu werden.
-  Wenn Sie jedoch eine postalische Kontaktaufnahme als unbedingt nötig erachten,
-  erreichen Sie uns unter der folgenden Addresse:
-</p>
+Wenn Sie jedoch eine postalische Kontaktaufnahme als unbedingt nötig erachten,
+erreichen Sie uns unter der folgenden Addresse:</p>
 <adress>SUMA-EV
-  Röselerstr. 3
-  30159 Hannover
-  Germany
-</adress>
-
+Röselerstr. 3
+30159 Hannover
+Germany</adress>
 @endsection
\ No newline at end of file
diff --git a/resources/views/layouts/resultPage.blade.php b/resources/views/layouts/resultPage.blade.php
new file mode 100644
index 0000000000000000000000000000000000000000..4d9b2ab6f77eb7496c378a59454ad5a09d3f8541
--- /dev/null
+++ b/resources/views/layouts/resultPage.blade.php
@@ -0,0 +1,145 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <title>test - MetaGer</title>
+    <link href="/css/bootstrap.css" rel="stylesheet" />
+    <link href="/css/styleResultPage.css" rel="stylesheet" />
+    <link href="/css/theme.css.php" rel="stylesheet" />
+    <link href="/favicon.ico" rel="icon" type="image/x-icon" />
+    <link href="/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+    <meta content="width=device-width, initial-scale=1.0, user-scalable=no" name="viewport" />
+    <meta content="3316" name="p" />
+    <meta content="test" name="q" />
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+</head>
+
+<body id="resultBody">
+    <div class="content-wrapper">
+        <header id="research">
+            <nav>
+                <ul class="list-inline">
+                    <li class="hidden-xs hidden-sm pull-left">
+                        <div class="logo"><a href="/"><h1>MetaGer</h1></a>
+                        </div>
+                    </li>
+                    <li class="visible-xs visible-sm pull-left">
+                        <div class="logo"><a href="/"><h1>MG</h1></a>
+                        </div>
+                    </li>
+                    <li class="pull-right">
+                        <form method="get" action="/meta/meta.ger3" enctype="multipart/form-data" accept-charset="UTF-8" class="form" id="submitForm">
+                            <div class="input-group">
+                                <input autocomplete="off" class="form-control" form="submitForm" id="eingabeTop" name="eingabe" placeholder="Suchbegriffe erweitern/verändern, oder völlig neue Suche:" tabindex="1" type="text" value="{{ $eingabe }}" />
+                                <div class="input-group-addon">
+                                    <button type='submit' form="submitForm" id='search'><span class="glyphicon glyphicon-search"></span>
+                                    </button>
+                                </div>
+                            </div>
+                            <input type='hidden' name='focus' value='web' form='submitForm' />
+                            <input type='hidden' name='encoding' value='utf8' form='submitForm' />
+                            <input type='hidden' name='lang' value='all' form='submitForm' />
+                            <input type='hidden' name='mobile' value='0' form='submitForm' />
+                        </form>
+                    </li>
+                </ul>
+            </nav>
+        </header>
+        <ul class="nav nav-tabs" id="foki" role="tablist">
+            <li class="active" data-loaded="1" id="webTabSelector" role="presentation"><a aria-controls="web" data-href="#web;out=results" href="#web"><span class='glyphicon glyphicon-globe'></span> <span class="hidden-xs">Web</span></a>
+            </li>
+            <li class="" data-loaded="0" id="bilderTabSelector" role="presentation"><a aria-controls="bilder" data-href="https://metager.de/meta/meta.ger3?focus=bilder&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0;out=results" href="https://metager.de/meta/meta.ger3?focus=bilder&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0"><span class='glyphicon glyphicon-picture'></span> <span class="hidden-xs">Bilder</span></a>
+            </li>
+            <li class="" data-loaded="0" id="nachrichtenTabSelector" role="presentation"><a aria-controls="nachrichten" data-href="https://metager.de/meta/meta.ger3?focus=nachrichten&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0;out=results" href="https://metager.de/meta/meta.ger3?focus=nachrichten&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0"><span class='glyphicon glyphicon-bullhorn'></span> <span class="hidden-xs">Nachrichten</span></a>
+            </li>
+            <li class="" data-loaded="0" id="wissenschaftTabSelector" role="presentation"><a aria-controls="wissenschaft" data-href="https://metager.de/meta/meta.ger3?focus=wissenschaft&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0;out=results" href="https://metager.de/meta/meta.ger3?focus=wissenschaft&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0"><span class='glyphicon glyphicon-file'></span> <span class="hidden-xs">Wissenschaft</span></a>
+            </li>
+            <li class="" data-loaded="0" id="produktsucheTabSelector" role="presentation"><a aria-controls="produktsuche" data-href="https://metager.de/meta/meta.ger3?focus=produktsuche&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0;out=results" href="https://metager.de/meta/meta.ger3?focus=produktsuche&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0"><span class='glyphicon glyphicon-shopping-cart'></span> <span class="hidden-xs">Produktsuche</span></a>
+            </li>
+        </ul>
+        <div class="tab-content container-fluid">
+            <div class="tab-pane active" data-focus="web" id="web" role="tabpanel">
+                @if( sizeof($errors) > 0 )
+                    <div class="alert alert-danger">
+                        <ul>
+                        @foreach($errors as $error)
+                            <li>{{ $error }}</li>
+                        @endforeach
+                        </ul>
+                    </div>
+                @endif
+                @if( sizeof($warnings) > 0)
+                    <div class="alert alert-warning">
+                        <ul>
+                        @foreach($warnings as $warning)
+                            <li>{{ $warning }}</li>
+                        @endforeach
+                        </ul>
+                    </div>
+                @endif
+                <div class="row">
+                    <div class="col-md-8">
+                        @yield('results')
+                    </div>
+                    <div class="col-md-4" id="quicktips">
+                       
+                    </div>
+                </div>
+                <nav class="pager">
+                    <ul class="pagination">
+                        <li class="disabled"><a data-href="" href="#"><span aria-hidden="true">&laquo;</span></a>
+                        </li>
+                        <li class="active"><a data-href="https://metager.de/meta/meta.ger3?focus=web&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0;out=results;page=1" href="">1 <span class="sr-only">(current)</span></a>
+                        </li>
+                        <li class=""><a data-href="https://metager.de/meta/meta.ger3?focus=web&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0;out=results;page=2" href="https://metager.de/meta/meta.ger3?focus=web&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0;page=2">2 </a>
+                        </li>
+                        <li class=""><a data-href="https://metager.de/meta/meta.ger3?focus=web&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0;out=results;page=3" href="https://metager.de/meta/meta.ger3?focus=web&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0;page=3">3 </a>
+                        </li>
+                        <li class=""><a data-href="https://metager.de/meta/meta.ger3?focus=web&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0;out=results;page=4" href="https://metager.de/meta/meta.ger3?focus=web&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0;page=4">4 </a>
+                        </li>
+                        <li class=""><a data-href="https://metager.de/meta/meta.ger3?focus=web&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0;out=results;page=5" href="https://metager.de/meta/meta.ger3?focus=web&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0;page=5">5 </a>
+                        </li>
+                        <li class=""><a data-href="https://metager.de/meta/meta.ger3?focus=web&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0;out=results;page=6" href="https://metager.de/meta/meta.ger3?focus=web&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0;page=6">6 </a>
+                        </li>
+                        <li class=""><a data-href="https://metager.de/meta/meta.ger3?focus=web&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0;out=results;page=7" href="https://metager.de/meta/meta.ger3?focus=web&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0;page=7">7 </a>
+                        </li>
+                        <li class=""><a data-href="https://metager.de/meta/meta.ger3?focus=web&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0;out=results;page=2" href="https://metager.de/meta/meta.ger3?focus=web&amp;eingabe=test&amp;encoding=utf8&amp;lang=all&amp;mobile=0;page=2"><span aria-hidden="true">&raquo;</span></a>
+                        </li>
+                    </ul>
+                </nav>
+            </div>
+            <div class="tab-pane " data-focus="bilder" id="bilder" role="tabpanel">
+                <div class="loader"><img alt="" src="/img/ajax-loader.gif" />
+                </div>
+            </div>
+            <div class="tab-pane " data-focus="nachrichten" id="nachrichten" role="tabpanel">
+                <div class="loader"><img alt="" src="/img/ajax-loader.gif" />
+                </div>
+            </div>
+            <div class="tab-pane " data-focus="wissenschaft" id="wissenschaft" role="tabpanel">
+                <div class="loader"><img alt="" src="/img/ajax-loader.gif" />
+                </div>
+            </div>
+            <div class="tab-pane " data-focus="produktsuche" id="produktsuche" role="tabpanel">
+                <div class="loader"><img alt="" src="/img/ajax-loader.gif" />
+                </div>
+            </div>
+        </div>
+    </div>
+    <footer>
+        <ul class="list-unstyled list-inline footer">
+            <li class="left"><a class="btn btn-default" href="/">MetaGer-Startseite</a>
+            </li>
+            <li class="right"><a class="btn btn-default" href="/impressum/">Impressum</a>
+            </li>
+        </ul>
+    </footer>
+    <script src="/js/jquery.js" type="text/javascript"></script>
+    <script src="/js/bootstrap.js" type="text/javascript"></script>
+    <script src="/js/masonry.js" type="text/javascript"></script>
+    <script src="/js/imagesloaded.js" type="text/javascript"></script>
+    <script src="/js/scriptResultPage.js" type="text/javascript"></script>
+    <!--[if lte IE 8]><script type="text/javascript" src="/js/html5shiv.min.js"></script><![endif]-->
+</body>
+
+</html>
\ No newline at end of file
diff --git a/resources/views/layouts/staticPages.blade.php b/resources/views/layouts/staticPages.blade.php
index e57749b0d1763fcb9dd785228dc7e3a04e1833cd..0a2e75344599ed3d51b4b1203b8746e1638e1058 100644
--- a/resources/views/layouts/staticPages.blade.php
+++ b/resources/views/layouts/staticPages.blade.php
@@ -26,7 +26,7 @@
             <div class="container">
               <div class="navbar-header">
                 <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false">
-                  <span class="sr-only">Navigation anzeigen
+                  <span class="sr-only">{{ trans('staticPages.navigationToggle') }}
                   </span>
                   <span class="icon-bar">
                   </span>
@@ -151,7 +151,7 @@
                 </li>
                 <li id="info">
                   <a href="/kontakt/">{{ trans('staticPages.nav5') }}</a> - <a href="/impressum/">{{ trans('staticPages.nav8') }}</a>
-                  MetaGer wird entwickelt und betrieben vom <a href="https://www.suma-ev.de/" target="_blank" >SUMA-EV - Verein f&uuml;r freien Wissenszugang.</a>
+                  {{ trans('staticPages.sumaev.1') }}<a href="https://www.suma-ev.de/" target="_blank" >{{ trans('staticPages.sumaev.2') }}</a>
                 </li>
                 <li>
                   <a href="https://www.uni-hannover.de/" target="_blank">
diff --git a/resources/views/metager3.blade.php b/resources/views/metager3.blade.php
new file mode 100644
index 0000000000000000000000000000000000000000..52069f144d4af2f82b8855c11d7529f999c2251b
--- /dev/null
+++ b/resources/views/metager3.blade.php
@@ -0,0 +1,39 @@
+@extends('layouts.resultPage')
+
+@section('results')
+	@foreach($results as $result)
+		<div class="result">
+                            <div class="number" style="color:#FF4000;">1 )</div>
+                            <div class="resultInformation">
+                                <p class="title"><a class="title" href="{{ $result['link'] }}" target="_blank">{{ $result['titel'] }}</a>
+                                </p>
+                                <div class="link">
+                                    <div>
+                                        <div class="link-link"><a data-count="1" data-host="test.de" data-hoster="fastbot" href="https://www.fastbot.de/red.php?red=3365000124457707395+http://www.test.de" target="_blank">{{ $result['anzeigeLink'] }}</a>
+                                        </div>
+                                        <div class="options"><a data-container="body" data-html="true" data-placement="auto bottom" data-title="&lt;span class='glyphicon glyphicon-cog'&gt;&lt;/span&gt; Optionen" data-toggle="popover" data-trigger="focus" tabindex="0"><span class="glyphicon glyphicon-triangle-bottom"></span></a>
+                                            <div class="content hidden">
+                                                <ul class="options-list list-unstyled">
+                                                    <li><a href="https://metager.de/meta/meta.ger3?focus=web&amp;eingabe=test%20site%3Awww.test.de&amp;encoding=utf8&amp;lang=all">Suche auf dieser Domain neu starten</a>
+                                                    </li>
+                                                    <li>
+                                                        <form method="get" action="/meta/meta.ger3" enctype="multipart/form-data" accept-charset="UTF-8" class="form">
+                                                            <input type="hidden" name="focus" value="web" />
+                                                            <input type="hidden" name="eingabe" value="test -host:test.de" />
+                                                            <input type="hidden" name="encoding" value="utf8" />
+                                                            <input type="hidden" name="lang" value="all" />
+                                                            <input type="hidden" name="mobile" value="0" />
+                                                            <input type="submit" name="" value="test.de ausblenden" />
+                                                        </form>
+                                                    </li>
+                                                </ul>
+                                            </div>
+                                        </div>
+                                    </div> <span class="hoster ">von  <a href="http://www.fastbot.de">fastbot</a></span>
+                                    <a class="proxy" data-container="body" data-content="Der Link wird anonymisiert geöffnet. Ihre Daten werden nicht zum Zielserver übetragen. Möglicherweise funktionieren manche Webseiten nicht wie gewohnt." data-placement="auto right" data-toggle="popover" href="https://proxy.suma-ev.de/cgi-bin/nph-proxy.cgi/en/I0/https/www.fastbot.de/red.php?red=3365000124457707395+http://www.test.de" onmouseout="$(this).popover('hide');" onmouseover="$(this).popover('show');" target="_blank"><img alt="Proxy-Icon" src="/img/proxyicon.png" />anonym öffnen</a>
+                                </div>
+                                <div class="description">{{ $result['descr'] }}</div>
+                            </div>
+                        </div>
+	@endforeach
+@endsection
diff --git a/resources/views/spende.blade.php b/resources/views/spende.blade.php
index 46a41b99f25d3278b471b185cfbfe832fd60b749..2427faa988e02877b7f62f5d1fbf6f23135693db 100644
--- a/resources/views/spende.blade.php
+++ b/resources/views/spende.blade.php
@@ -3,23 +3,16 @@
 @section('title', $title )
 
 @section('content')
-<h1>Ihre Spende f&uuml;r SUMA-EV und MetaGer</h1>
-<h2>Helfen Sie mit, dass freie Suchmaschinen im Internet frei bleiben. Das digitale Wissen der Welt muss ohne Bevormundung durch Staaten oder Konzerne frei zug&auml;nglich sein und bleiben.</h2>
+<h1>{{ trans('spenden.headline.1') }}</h1>
+<h2>{{ trans('spenden.headline.2') }}</h2>
 <div class="col">
 <div id="left" class="col-lg-6 col-md-12 col-sm-12 others">
-<h2>Durch eine &Uuml;berweisung</h2>
-<p>SUMA-EV
-IBAN: DE64 4306 0967 4075 0332 01
-BIC: GENODEM1GLS
-(Konto-Nr.: 4075 0332 01, BLZ: 43060967)
-GLS Gemeinschaftsbank, Bochum</p>
-            <p class="text-muted">Falls Sie eine Spendenbescheinigung w&uuml;nschen,
-geben Sie auf dem &Uuml;berweisungsformular bitte Ihre
-vollst&auml;ndige Adresse, und (sofern vorhanden) auch Ihre EMail-Adresse an.</p>
+<h2>{{ trans('spenden.bankinfo.1') }}</h2>
+<p>{{ trans('spenden.bankinfo.2') }}</p>
+            <p class="text-muted">{{ trans('spenden.bankinfo.3') }}</p>
             <hr>
             <div class="col-lg-6 col-md-12 col-sm-12 others ppbc">
-              <h2>Bequem mit Paypal
-              </h2>
+              <h2>{{ trans('spenden.logos.1') }}</h2>
               <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
                 <input name="cmd" value="_xclick" type="hidden">
                 <input name="business" value="wsb@suma-ev.de" type="hidden">
@@ -38,8 +31,7 @@ vollst&auml;ndige Adresse, und (sofern vorhanden) auch Ihre EMail-Adresse an.</p
               </form>
             </div>
             <div class="col-lg-6 col-md-12 col-sm-12 others ppbc">
-              <h2>oder Bitcoins
-              </h2>
+              <h2>{{ trans('spenden.logos.2') }}</h2>
               <a href="bitcoin:174SDRNZqM2WNobHhCDqD1VXbnZYFXNf8V">
                 <img src="/img/WeAcceptBitcoin.png" style="width:120px" alt="Bitcoin">
               </a>
@@ -47,78 +39,45 @@ vollst&auml;ndige Adresse, und (sofern vorhanden) auch Ihre EMail-Adresse an.</p
             <div class="clearfix">
             </div>
             <hr>
-            <h2 id="lastschrift">Spenden mittels elektronischem Lastschriftverfahren:
-            </h2>
-            <p>Tragen Sie hier Ihre Kontodaten sowie den gew&uuml;nschten Betrag ein. Wir buchen dann entsprechend von Ihrem Konto ab.</p>
+            <h2 id="lastschrift">{{ trans('spenden.lastschrift.1') }}</h2>
+            <p>{{ trans('spenden.lastschrift.2') }}</p>
             <form role="form" method="POST">
               {{ csrf_field() }}
               <div class="form-group">
-                <label for="Name">Bitte geben Sie ihren Namen ein:
-                </label>
-                <input type="text" class="form-control" id="Name" required="" name="Name" placeholder="Name">
+                <label for="Name">{{ trans('spenden.lastschrift.3') }}</label>
+                <input type="text" class="form-control" id="Name" required="" name="Name" placeholder="{{ trans('spenden.lastschrift.3.placeholder') }}">
               </div>
               <div class="form-group">
-                <label for="email">Ihre E-Mail Adresse:
-                </label>
+                <label for="email">{{ trans('spenden.lastschrift.4') }}</label>
                 <input type="email" class="form-control" id="email" name="email" placeholder="Email">
               </div>
               <div class="form-group">
-                <label for="tel">Ihre Telefonnummer, um Ihre Spende ggf. durch einen R&uuml;ckruf zu verifizieren:
-                </label>
+                <label for="tel">{{ trans('spenden.lastschrift.5') }}</label>
                 <input type="tel" class="form-control" id="tel" name="Telefon" placeholder="xxxx-xxxxx">
               </div>
               <div class="form-group">
-                <label for="iban">Ihre IBAN oder Kontonummer:
-                </label>
+                <label for="iban">{{ trans('spenden.lastschrift.6') }}</label>
                 <input type="text" class="form-control" id="iban" required="" name="Kontonummer" placeholder="IBAN">
               </div>
               <div class="form-group">
-                <label for="bic">Ihre BIC oder Bankleitzahl:
-                </label>
+                <label for="bic">{{ trans('spenden.lastschrift.7') }}</label>
                 <input type="text" class="form-control" id="bic" required="" name="Bankleitzahl" placeholder="BIC">
               </div>
               <div class="form-group">
-                <label for="msg">Hier k&ouml;nnen Sie uns formlos mitteilen, welchen Betrag Sie spenden m&ouml;chten und ggf. noch eine Mitteilung dazu senden:
-                </label>
-                <textarea class="form-control" id="msg" required="" name="Nachricht" placeholder="Nachricht"></textarea>
+                <label for="msg">{{ trans('spenden.lastschrift.8') }}</label>
+                <textarea class="form-control" id="msg" required="" name="Nachricht" placeholder="{{ trans('spenden.lastschrift.8.placeholder') }}"></textarea>
               </div>
-              <button type="submit" class="btn btn-default">Spenden
-              </button>
+              <button type="submit" class="btn btn-default">{{ trans('spenden.lastschrift.9') }}</button>
             </form>
-            <p>Ihre Daten werden &uuml;ber eine verschl&uuml;sselte Verbindung zu uns &uuml;bertragen und k&ouml;nnen von Dritten nicht mitgelesen werden. Der Betrag, den Sie angegeben haben, wird dann durch uns von Ihrem Konto abgebucht. SUMA-EV verwendet Ihre Daten ausschlie&szlig;lich f&uuml;r die Spendenabrechnung; Ihre Daten werden nicht weitergegeben. Spenden an den SUMA-EV sind steuerlich absetzbar, da der Verein vom Finanzamt Hannover Nord als gemeinn&uuml;tzig anerkannt ist, eingetragen in das Vereinsregister beim Amtsgericht Hannover unter VR200033. Eine Bescheinigung f&uuml;r Einzelspenden oberhalb 200,-EUR wird automatisch zugesandt. Bei Spenden bis 200,-EUR gen&uuml;gt der Kontoauszug f&uuml;r die Absetzbarkeit beim Finanzamt.
-            </p>
+            <p>{{ trans('spenden.lastschrift.10') }}</p>
           </div>
           <div class="col-lg-6 col-md-12 col-sm-12 others" id="right">
-            <h2>&Uuml;ber uns
-            </h2>
-            <p>Die deutsche Suchmaschine MetaGer wird betrieben und stetig weiterentwickelt vom SUMA-EV - Verein f&uuml;r freien Wissenszugang. Wir sind ein gemeinn&uuml;tzig anerkannter Verein, eines unserer Ziele ist die Entwicklung und der Betrieb von Suchmaschinen. Wir erhalten keine &ouml;ffentlichen F&ouml;rdergelder und sind daher auf Ihre Spenden angewiesen. Wir haben unsere Werbung stark reduziert, denn wir vertrauen auf IHRE Unterst&uuml;tzung.
-              Helfen Sie mit, dass freie Suchmaschinen im Internet erhalten bleiben und weiterentwickelt werden!
-              Das k&ouml;nnen Sie mit einer Spende auf dieser Seite tun. Oder, wenn Sie freie Suchmaschinen auch langfristig sichern wollen:
-              <a href="https://metager.de/klassik/bform1.htm" target="_blank">Werden Sie Mitglied im SUMA-EV
-              </a>
-            </p>
-            <p>Wenn Sie 50,-EUR oder mehr spenden, oder Mitglied im 
-              <a href="http://suma-ev.de/" target="_blank">SUMA-EV
-              </a> werden, dann k&ouml;nnen Sie, wenn Sie wollen, auf unserer 
-              <a href="http://suma-ev.de/suma-links/index.html#sponsors" target="_blank">Mitglieder- und Sponsorenseite 
-              </a>namentlich mit Link auf Ihre Homepage (sofern vorhanden) genannt werden (wenn Sie dies w&uuml;nschen, vermerken Sie es bitte in Ihrer Mitteilung) 
-              <a href="https://metager.de/klassik/spenden1.html" target="_blank">Oder werden Sie SUMA-EV F&ouml;rderer!
-              </a>
-            </p>
-            <p>
-              <a href="http://suma-ev.de/unterstuetzung/index.html" target="_blank">JEDE Form Ihrer Unterst&uuml;tzung 
-              </a>hilft mit, dass freie Suchmaschinen und freier Wissenszugang im Internet eine Chance haben. Zum freien Wissenszugang geh&ouml;rt es auch, dass Ihre Daten weder &uuml;berwacht, noch Ihre Internet-Adressen und Verbindungsdaten gespeichert werden. Bei uns wird Ihre Internet-Adresse bereits w&auml;hrend der Suche anonymisiert, sie wird nicht gespeichert und nicht an Dritte weitergegeben.Freie Internet-Suche ohne &Uuml;berwachung: 
-              <a href="https://metager.de/" target="_blank">MetaGer.de!
-              </a>
-            </p>
-            <p>Eine weitere M&ouml;glichkeit, MetaGer zu f&ouml;rdern, besteht darin, dass Sie Ihren n&auml;chsten Online-Einkauf bei MetaGer-F&ouml;rdershops machen. Damit wir auf diesem Weg unterst&uuml;tzt werden k&ouml;nnen, haben wir uns in das Netzwerk zur F&ouml;rderung gemeinn&uuml;tzig anerkannter Organisationen eingebracht, das Projekt 
-              <a href="https://www.boost-project.com/de" target="_blank">www.boost-project.com
-              </a>. Unter dem Dach dieses Projektes sind ca. 400 Online-Shops (von Amazon bis Zooplus) vereint, die sich bereit erkl&auml;rt haben, von allen Verk&auml;ufen etwa 6% an das Projekt zu spenden. Statt wie bisher direkt zum Online-Shop zu surfen, gehen Sie zun&auml;chst auf 
-              <a href="https://metager.de/" target="_blank">MetaGer.de!
-              </a> und klicken dort unterhalb der Suchwort-Eingabebox auf 
-              <a href="https://www.boost-project.com/de/shops?charity_id=1129&amp;tag=bl" target="_blank">Machen Sie Ihre Eink&auml;ufe bei MetaGer-F&ouml;rdershops - klicken Sie hier!
-              </a> Dieser Klick f&uuml;hrt Sie in die Shop-Auswahl des Boost-Projektes. Dort suchen Sie sich Ihren Shop aus und machen wie gewohnt Ihren Einkauf. Das ist alles. Wenn genug Menschen dies tun, dann brauchen wir keine Werbung mehr. Nur zwei Mausklicks f&uuml;r Sie - f&uuml;r alle eine Chance f&uuml;r den freien Wissenszugang in der digitalen Welt. 
-            </p>
+            <h2>{{ trans('spenden.about.0') }}</h2>
+            <p>{{ trans('spenden.about.1.1') }}
+              <a href="https://metager.de/klassik/bform1.htm" target="_blank">{{ trans('spenden.about.1.2') }}</a></p>
+            <p>{{ trans('spenden.about.2.1') }} <a href="http://suma-ev.de/" target="_blank">SUMA-EV</a> {{ trans('spenden.about.2.2') }} <a href="http://suma-ev.de/suma-links/index.html#sponsors" target="_blank">{{ trans('spenden.about.2.3') }}</a> {{ trans('spenden.about.2.4') }} <a href="https://metager.de/klassik/spenden1.html" target="_blank">{{ trans('spenden.about.2.5') }}</a></p>
+            <p><a href="http://suma-ev.de/unterstuetzung/index.html" target="_blank">{{ trans('spenden.about.3.1') }}</a> {{ trans('spenden.about.3.2') }} <a href="https://metager.de/" target="_blank">MetaGer.de!</a></p>
+            <p>{{ trans('spenden.about.4.1') }} <a href="https://www.boost-project.com/de" target="_blank">www.boost-project.com</a> {{ trans('spenden.about.4.2') }} <a href="https://metager.de/" target="_blank">MetaGer.de!</a> {{ trans('spenden.about.4.3') }} <a href="https://www.boost-project.com/de/shops?charity_id=1129&amp;tag=bl" target="_blank">{{ trans('spenden.about.4.4') }}</a> {{ trans('spenden.about.4.5') }}</p>
           </div>
           <div class="clearfix">
           </div>
diff --git a/resources/views/team/team.blade.php b/resources/views/team/team.blade.php
index 704438654dbe9c644b1436bcc8f374d842308bab..1d7fb5058145e37e215f92cfbadd5d454e76dcf9 100644
--- a/resources/views/team/team.blade.php
+++ b/resources/views/team/team.blade.php
@@ -8,47 +8,39 @@
 <ul id="teamList">
   <li>
     <a href="https://de.wikipedia.org/wiki/Wolfgang_Sander-Beuermann" target="_blank">Sander-Beuermann, Wolfgang
-    </a>, Dr.-Ing. - Geschäftsführer, Vorstand - 
+    </a>, Dr.-Ing. - {{ trans('team.role.1') }} - 
     <a href="mailto:wsb@suma-ev.de">wsb@suma-ev.de
     </a> - 
     <a href="/team/pubkey-wsb">Public Key
     </a>
   </li>
-  <li>Becker, Georg - Büroleiter und Jugendschutzbeauftragter - 
+  <li>Becker, Georg - {{ trans('team.role.2') }} - 
     <a href="mailto:georg.becker@suma-ev.de">georg.becker@suma-ev.de
     </a>
   </li>
-  <li>Branz, Manuela - Pressereferentin - 
+  <li>Branz, Manuela - {{ trans('team.role.3') }} - 
     <a href="mailto:manuela.branz@suma-ev.de">manuela.branz@suma-ev.de
     </a>
   </li>
-  <li>Pfennig, Dominik - Programmierer - 
+  <li>Pfennig, Dominik - {{ trans('team.role.4') }} - 
     <a href="mailto:dominik@suma-ev.de">dominik@suma-ev.de
     </a>
   </li>
-  <li>Höfer, Phil - Programmierer - 
+  <li>Höfer, Phil - {{ trans('team.role.5') }} - 
     <a href="mailto:phil@suma-ev.de">phil@suma-ev.de
     </a>
   </li>
-  <li>Hasselbring, Karl - Programmierer - 
+  <li>Hasselbring, Karl - {{ trans('team.role.6') }} - 
     <a href="mailto:karl@suma-ev.de">karl@suma-ev.de
     </a>
   </li>
-  <li>Riel, Carsten - Sekretariat - 
+  <li>Riel, Carsten - {{ trans('team.role.7') }} - 
     <a href="carsten@suma-ev.de">carsten@suma-ev.de
     </a>
   </li>
 </ul>
-<p>Fragen/Probleme zu MetaGer etc. bitte immer an 
-  <a href="mailto:office@suma-ev.de">office@suma-ev.de
-  </a> mailen, oder das 
-  <a href="/kontakt/">Kontaktformular mit Verschlüsselung
-  </a> benutzten, oder am besten: ins 
-  <a href="http://forum.suma-ev.de/" target="_blank">MetaGer-Forum
-  </a> schreiben. Wir können bei der Vielzahl der Anfragen nicht immer zeitnah antworten - im 
-  <a href="http://forum.suma-ev.de/" target="_blank">MetaGer-Forum
-  </a> können Ihnen wahrscheinlich auch andere MetaGer-Nutzer weiterhelfen, und von den Fragen und Antworten profitieren ALLE. 
-</p>
-<p>Nur in begründeten Ausnahmefällen, wenn Sie bestimmte Personen direkt erreichen wollen, sollten Sie an diese mailen. Denn Team-Mitglieder können Urlaub haben, krank sein usw.
+<p>{{ trans('team.contact.1') }} 
+  <a href="mailto:office@suma-ev.de">office@suma-ev.de</a> {{ trans('team.contact.2') }} <a href="/kontakt/">{{ trans('team.contact.3') }}</a>{{ trans('team.contact.4') }} <a href="http://forum.suma-ev.de/" target="_blank">{{ trans('team.contact.5') }}</a> {{ trans('team.contact.6') }} <a href="http://forum.suma-ev.de/" target="_blank">{{ trans('team.contact.7') }}</a> {{ trans('team.contact.8') }} </p>
+<p>{{ trans('team.contact.9') }}
 </p>
 @endsection
\ No newline at end of file