diff --git a/process/DataTimeshift_lib/process.js b/process/DataTimeshift_lib/process.js
index 1d32d542790c81bfe06eb1d566515d334192659f..0a77550a49b54114c1d3f799aad18dcf8748cdd3 100644
--- a/process/DataTimeshift_lib/process.js
+++ b/process/DataTimeshift_lib/process.js
@@ -25,7 +25,9 @@ function TimeShifter(pAlias)
     this._tablesToUpdate = new Set();
     this._customTreatments = new Map();
     
+    //function for most use-cases (generic tables)
     this._defaulTreatmentFunc = function(pDifferenceMillis, pTablename, pPrimaryKeySupplier, pColumnsSupplier, pColumnTypeSupplier) {
+        //only suppliers are provided because of the customTreamentFunctions (-> special use cases)
         var columnNames = pColumnsSupplier.get();
         var columnTypes = pColumnTypeSupplier.get();
         var pkField = pPrimaryKeySupplier.get();
@@ -144,6 +146,7 @@ TimeShifter.prototype.timeshift = function (pOffsetInMillis)
 {   
     var timeDiff = pOffsetInMillis;
     this.getTablesToShift().forEach(function (tableName) {
+        //only pass suppliers because the customTreamentFunctions do not need always a PK, columns or types
         var pkSupplier = new CachedSupplierWrapper(new PrimaryKeyNameSupplier(this.getAlias(), tableName));
         var columnSupplier = new CachedSupplierWrapper(new ColumnSupplier(this.getAlias(), tableName));
         var columnTypesSupplier = new CachedSupplierWrapper(new ColumnTypesSupplier(this.getAlias(), tableName, columnSupplier));
@@ -173,4 +176,4 @@ function TimeShiftUtils(){}
  */
 TimeShiftUtils.getTimeShiftingServiceUserTitle = function (){
     return "timeshiftService";
-}
\ No newline at end of file
+}
diff --git a/process/DatabaseSupplier_lib/process.js b/process/DatabaseSupplier_lib/process.js
index f9052970b6bdb27a83ab515c8dc7a2bb67c0434f..d6b36bb160f8720d4351406376adf8449ee3cd61 100644
--- a/process/DatabaseSupplier_lib/process.js
+++ b/process/DatabaseSupplier_lib/process.js
@@ -6,29 +6,58 @@ import("system.project");
 /*
  * Database supplier lib, supplies a unified object structure for loading table definitions
  */
+
+//todo: create a general supplier implementation which the lib here uses and inherits from.
+
+/**
+ * common base for database table suppliers which containes the following shared information:
+ * - pAlias
+ * - pTable
+ * Has a standard implementation of the get-method which will throw an Error.
+ * 
+ * @param {String} pAlias Name of the database-alias to run interactions on, e.g. "Data_alias"<br/>
+ *                        This is only used as a  information that can be accessed within the supplier implementation         
+ * @param {String} pTable Name of the db-tablename, e.g. "ORGANISATION" <br/>
+ *                        This is only used as a  information that can be accessed within the supplier implementation 
+ */
 function AbstractDbTableBasedSupplier(pAlias, pTable)
 {
     this._alias = pAlias;
     this._table = pTable;
 }
 
+/**
+ * Abstract placeholder that will raise an error during runtime.
+ * The get method needs to be overwritten by the supplier-implementation
+ */
 AbstractDbTableBasedSupplier.prototype.get = function()
 {
     throw new Error("[AbstractDbTableBasedSupplier.get]Not implemented because it is abstract.");
 };
 
 
-//Supplier for pks
+/**
+ * Supplier to retrieve a tables pimaryKey.
+ * The Supplier will only retrieve the primary key name when the get-method is called.
+ * @param {String} pAlias database-alias where the given table (in the pTable param) is located
+ * @param {String} pTable name of the table from which the primaryKey should be retrieved
+ */
 function PrimaryKeyNameSupplier(pAlias, pTable)
 {
     AbstractDbTableBasedSupplier.call(this, pAlias, pTable);
 }
+//build up prototype chain
 PrimaryKeyNameSupplier.prototype = Object.create(AbstractDbTableBasedSupplier.prototype);
 PrimaryKeyNameSupplier.prototype.constructor = AbstractDbTableBasedSupplier;
 
-//uses alias definitions to return the primary key name for pTable defined in the constructor
+/**
+ * uses the alias definition to return the primary key name of the table that is given in the PrimaryKeyNameSupplier
+ * 
+ * @returns {String} name of the primary key column or empty string "" when the table was ot found or the no primaryKey exists in the table
+ */
 PrimaryKeyNameSupplier.prototype.get = function()
 {
+    //wait what? todo: wrap the PK supplier in a CachedSupplierWrapper
     if (!this.hasOwnProperty(this._resultCache))
     {
         var struct = project.getAliasDefinitionStructure(this._alias, this._table);
@@ -43,15 +72,26 @@ PrimaryKeyNameSupplier.prototype.get = function()
     return this._resultCache;
 };
 
-//Supplier for column names
+/**
+ * general Supplier for column names of a database table
+ * The Supplier will only retrieve the column names name when the get-method is called.
+ * 
+ * @param {String} pAlias database-alias where the given table (in the pTable param) is located
+ * @param {String} pTable name of the table from which the columns should be retrieved
+ */
 function ColumnSupplier(pAlias, pTable)
 {
     AbstractDbTableBasedSupplier.call(this, pAlias, pTable);
 }
+//build up the prototype-chain
 ColumnSupplier.prototype = Object.create(AbstractDbTableBasedSupplier.prototype);
 ColumnSupplier.prototype.constructor = AbstractDbTableBasedSupplier;
 
-//returns all column names of a table pTable defined in the constructor
+/**
+ * Returns columns for the specified table.
+ * 
+ * @returns {Array} array of Strings  with the names of all columns
+ */
 ColumnSupplier.prototype.get = function()
 {
     var columns = db.getColumns(this._table, this._alias);
@@ -59,19 +99,32 @@ ColumnSupplier.prototype.get = function()
 };
 
 
-//Supplier for column types
+/**
+ * general Supplier for types of a list of columns of a database table
+ * The Supplier will only retrieve the column types when the get-method is called.
+ * The collumns are not retrieved until this Providers get-method is called.
+ * 
+ * @param {String} pAlias database-alias where the given table (in the pTable param) with the columns is located
+ * @param {String} pTable name of the table from which the columns should be retrieved
+ * @param {ColumnSupplier} pColumnSupplier Supplier that provides the columns to get the types from
+ */
 function ColumnTypesSupplier(pAlias, pTable, pColumnSupplier)
 {
     AbstractDbTableBasedSupplier.call(this, pAlias, pTable);
     this._columnSuppier = pColumnSupplier;
 }
+//build up the prototype-chain
 ColumnTypesSupplier.prototype = Object.create(AbstractDbTableBasedSupplier.prototype);
 ColumnTypesSupplier.prototype.constructor = AbstractDbTableBasedSupplier;
 
-//returns column types for all columns of table pTable defined in the constructor
+/**
+ * Returns column types for specified columns of a table.
+ * 
+ * @returns {Array} array of constants (numers)  with the columntypes for each column in the same order of the columns
+ */
 ColumnTypesSupplier.prototype.get = function()
 {
     var columns = this._columnSuppier.get();
     var columnTypes = db.getColumnTypes(this._table, columns, this._alias);
     return columnTypes;
-};
\ No newline at end of file
+};
diff --git a/process/Supplier_lib/process.js b/process/Supplier_lib/process.js
index 6c4788e9134d91f02afa81d1b2253bd26e7567eb..7754e1bb38702e8e7af7364557a1e6384b4875d8 100644
--- a/process/Supplier_lib/process.js
+++ b/process/Supplier_lib/process.js
@@ -1,16 +1,22 @@
+//todo: create a general supplier implementation which may be used for different purposes; alternative search for another implementation (e.g. npm)
+
 /*
- * Wrapper object to cache and load suppliers (see DatabaseSupplier_lib) 
+ * Wrapper object to Wrap Suppliers. The supplied value is cached once at the first load. Every next access to the supplier will retrieve the cached value instead.
  *
+ * @param {Supplier} pSupplier A supplier where the result will be cached.
  */
-
 function CachedSupplierWrapper(pSupplier)
 {
-    //todo: assertion
+    //todo: assertion if the accepted pSupplier is really a supplier or if it is something else
     this._supplier = pSupplier;
     this._valueLoaded = false;
     this._cache = null;
 }
 
+/**
+ * Retrieves the value of the supplier. If it is the first access, the origin Supplier is called, otherwise the cache is used
+ * @returns {*} Returns the value that is defined in the supplier.
+ */
 CachedSupplierWrapper.prototype.get = function()
 {
     if (!this._valueLoaded)
@@ -21,7 +27,11 @@ CachedSupplierWrapper.prototype.get = function()
     return this._cache;
 };
 
+/**
+ * Returns the origin Supplier instance that was passed to the CachedSupplierWrapper.
+ * @returns {Supplier} The Supplier where the value is loaded from
+ */
 CachedSupplierWrapper.prototype.getSupplier = function ()
 {
     return this._supplier;
-};
\ No newline at end of file
+};