diff --git a/index.html b/index.html
index 3768192e0715151a5a07fb042f0d4dfe29c92b0d..d9c3ed2c1463b759bda602fcc6d9ad0b79ac0681 100644
--- a/index.html
+++ b/index.html
@@ -134,7 +134,12 @@
                         </li>
                         <!--<li><a href="#test"><b class="fui-exit"></b> Testen</a></li>-->
                         <!--<li id="navHeadStatistic"><a href="#statistic"><img src="img/Icons/iconmonstr-bar-chart-icon-32.png"> Statistiken</a></li>-->
-                        <li id="showContact"><a href="#"><b class="fui-document"></b> Kontakt</a></li>
+                        <li class="dropdown">
+                            <a id="navHeadStatistic" href="#" class="dropdown-toggle" data-toggle="dropdown"><img src="img/Icons/iconmonstr-bar-chart-icon-32.png"> Statistiken</a>
+                            <ul class="dropdown-menu">
+                                <li id="downloadContextData"><a href="#">Herunterladen <b class="fui-triangle-down" style="float: right"></b></a></li>
+                            </ul>
+                        </li>
                     </ul>
                     <ul class="nav navbar-nav navbar-right">
                         <li class="dropdown">
@@ -144,6 +149,7 @@
                                 <li id="showLogin"><a href="#">Logout <b class="fui-lock" style="float: right"></b></a></li>
                             </ul>
                         </li>
+                        <li id="showContact"><a href="#"><b class="fui-document"></b> Kontakt</a></li>
                         <li class="active" id="showHelp" style="cursor: pointer"><a><b class="fui-question-circle"></b> Hilfe</a></li>
                     </ul>
                 </div>
diff --git a/js/authoring/models/authorSystemContentModel.js b/js/authoring/models/authorSystemContentModel.js
index 593392cf2733db7e62562fe4ec43c7fa18452c53..e24c9bda54f547d505a9752c83b0e0106275a13b 100644
--- a/js/authoring/models/authorSystemContentModel.js
+++ b/js/authoring/models/authorSystemContentModel.js
@@ -61,4 +61,20 @@ AuthorSystemContent.prototype.removeScenario = function(scenarioName) {
         if (scenario.getName() == scenarioName)
             this._scenarioList.splice(i, 1);
     }
+};
+
+AuthorSystemContent.prototype.getContextInformation = function() {
+    var contextList = [];
+    for (var i in this._scenarioList) {
+        var unitList = this._scenarioList[i].getUnits();
+        for (var j in unitList) {
+            var unitContext = unitList[j].getContextData();
+            for (var k in unitContext) {
+                var contextItem = unitContext[k];
+                if (contextList.indexOf(contextItem) == -1)
+                    contextList.push(contextItem);
+            }
+        }
+    }
+    return contextList;
 };
\ No newline at end of file
diff --git a/js/authoring/models/contextInfoListModel.js b/js/authoring/models/contextInfoListModel.js
index a2f8c72051ac44459eb343c5702f570c20e7e9da..fbccec0f79072c21ff654be205b6e4e7cdb33901 100644
--- a/js/authoring/models/contextInfoListModel.js
+++ b/js/authoring/models/contextInfoListModel.js
@@ -44,6 +44,26 @@ function ContextInfoList() {
     return this;
 }
 
+// generates and adds a new items list from a list of JSON objects duck-typable as ContextInformation
+ContextInfoList.prototype.fromJSON = function (data) {
+    for (var i in data) {
+        // "cast" the context items to ContextInformation and remove previously entered values
+        var contextItem = new ContextInformation().fromJSON(data[i]);
+        contextItem.setChosenValue("");
+        contextItem.setChosenOperator("");
+
+        // "cast" the item's parameters to Parameter and remove previously entered values
+        var parameters = [], tempParams = contextItem.getParameters();
+        for (var ip in tempParams) {
+            var param = new Parameter().fromJSON(tempParams[ip]);
+            param.setChosenValue("");
+            parameters.push(param);
+        }
+        contextItem.setParameters(parameters);
+        this._items.push(contextItem);
+    }
+};
+
 ContextInfoList.prototype.initClasses = function () {
     for (var key in contextClassDictionary)
         this._classes.push(key);
@@ -53,6 +73,10 @@ ContextInfoList.prototype.setItems = function (items) {
     this._items = items;
 };
 
+ContextInfoList.prototype.addItem = function (item) {
+    this._items.push(item);
+};
+
 ContextInfoList.prototype.getItems = function () {
     return this._items;
 };
diff --git a/js/authoring/models/contextInfoModel.js b/js/authoring/models/contextInfoModel.js
index 7174774e63ce4fd3db4176ef76f046945d145c27..7918129f2142d1c9d27db04a6fec5018879ac6cf 100644
--- a/js/authoring/models/contextInfoModel.js
+++ b/js/authoring/models/contextInfoModel.js
@@ -2,9 +2,7 @@
  * Created by Helena on 04.09.2015.
  */
 
-
-
-// the list of all available context information data types
+// the data structure of a context item
 function ContextInformation() {
 
     this._id = "";
@@ -13,15 +11,22 @@ function ContextInformation() {
     this._min = "";
     this._max = "";
     this._default = "";
-    this._chosenValue = "";
+    this._chosenValue = ""; // set by the author in unit editing
     this._operators = [];
-    this._chosenOperator = "";
+    this._chosenOperator = "";  // set by the author in unit editing
     this._enums = [];
     this._parameters = [];
 
     return this;
 }
 
+// support "casting" a duck-typed JSON object to ContextInformation
+ContextInformation.prototype.fromJSON = function(item) {
+    for (i in item)
+        this[i] = item[i];
+    return this;
+};
+
 // getters
 ContextInformation.prototype.getID = function () {
     return this._id;
diff --git a/js/authoring/models/parameterModel.js b/js/authoring/models/parameterModel.js
index 7d092456028f3807aa658391d553bc3a6d382a5d..51f83d17561220b74e62dbadc17c78351bc1a3a9 100644
--- a/js/authoring/models/parameterModel.js
+++ b/js/authoring/models/parameterModel.js
@@ -15,6 +15,13 @@ function Parameter() {
     return this;
 }
 
+// support "casting" a duck-typed JSON object to Parameter
+Parameter.prototype.fromJSON = function(item) {
+    for (i in item) this[i] = item[i];
+
+    return this;
+};
+
 // getters
 Parameter.prototype.getID = function () {
     return this._id;
diff --git a/js/main.js b/js/main.js
index cf96422a17f62643c93dc3156060fb19606c8d3d..202e518ba145b3311e6e5f16a70a29ec6e3c925f 100644
--- a/js/main.js
+++ b/js/main.js
@@ -29,4 +29,13 @@ jsPlumb.ready(function () {
     // reload data from localStorage
     initLoader();
 
+    $("#navHeadStatistic").on("click", function() {
+        var obj = authorSystemContent.getContextInformation();
+        var data = "text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(obj));
+
+        var a = $("#downloadContextData > a")[0];
+        a.href = 'data:' + data;
+        a.download = 'data.json';
+    });
+
 });
\ No newline at end of file