diff --git a/.gitignore b/.gitignore
index 58e9fba255bd08d977ffba5c670079d349d7fb17..20f245e3dca3b11f428faab14eb7a8181616aaf4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,4 @@ R/Companies/
 Formulas_Reference/2013*.xls*
 LifeInsuranceContracts.Rproj
 Vergleichsrechnung_Excel
+inst/doc
diff --git a/DESCRIPTION b/DESCRIPTION
index fb386f229d726d0201ea8d1659e51b48aaf061ae..c10c22abd9376b2e13ad4a241fe79758a4bec341 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -18,7 +18,12 @@ RoxygenNote: 5.0.1
 Collate:
     'HelperFunctions.R'
     'InsuranceParameters.R'
+    'ProfitParticipation.R'
     'InsuranceTarif.R'
     'InsuranceContract.R'
-    'ProfitParticipation.R'
+    'LifeInsuranceContracts.R'
     'exportInsuranceContract_xlsx.R'
+Suggests:
+    knitr,
+    rmarkdown
+VignetteBuilder: knitr
diff --git a/NAMESPACE b/NAMESPACE
index cd4cc841e0b2cf5f8e14e614cb7953145456b35a..e2217bb7451c199b61d44bb67088b44c57894454 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -1,5 +1,15 @@
 # Generated by roxygen2: do not edit by hand
 
+export(InsuranceContract)
+export(InsuranceContract.ParameterDefaults)
+export(InsuranceContract.ParametersFallback)
+export(InsuranceContract.ParametersFill)
+export(InsuranceContract.Values)
+export(InsuranceTarif)
+export(ProfitParticipation)
+export(exportInsuranceContract.xlsx)
+export(initializeCosts)
 import(R6)
 import(ValuationTables)
 import(lubridate)
+import(openxlsx)
diff --git a/R/InsuranceContract.R b/R/InsuranceContract.R
index 1ba6b5b623b02eb0a6caf9aa9687de17435b1527..71d5ad54b0b1957634ce281b099233140e7b27c3 100644
--- a/R/InsuranceContract.R
+++ b/R/InsuranceContract.R
@@ -1,10 +1,23 @@
-library(R6)
-library(openxlsx);
-library(ValuationTables);
-
-#' @include HelperFunctions.R
-#' @include InsuranceTarif.R
-
+#' @include HelperFunctions.R InsuranceParameters.R InsuranceTarif.R ProfitParticipation.R
+#'
+#' @import ValuationTables
+#' @import R6
+#' @import lubridate
+NULL
+
+
+
+#' Base Class for Insurance Contracts
+#'
+#' R6 class that models a complete, general insurance contract.
+#' The corresponding tariff and the profit participation scheme, as well as
+#' all other relevant contract parameters (if not defined by the tariff or
+#' explicitly overridden by the contract) can be given in the constructor.
+#'
+#' Immediately upon construction, all premiums, reserves and cash flows for the
+#' whole contract period are calculated.
+#'
+#' @export
 InsuranceContract = R6Class(
     "InsuranceContract",
 
diff --git a/R/InsuranceParameters.R b/R/InsuranceParameters.R
index ea33c3974a27b8d01e1e0bccc1d1a4207e9e074a..b0b23e69b6fed861c72d36e57832c9eb76aa5455 100644
--- a/R/InsuranceParameters.R
+++ b/R/InsuranceParameters.R
@@ -1,12 +1,13 @@
-# @include
+#' @import lubridate
+NULL
 
 
-
-# Initialize a cost matrix with dimensions: [CostType, Basis, Period], with:
-#     CostType: alpha, Zillmer, beta, gamma, gamma_nopremiums
-#     Basis:    SumInsured, SumPremiums, GrossPremium
-#     Period:   once, PremiumPeriod, PremiumFree, PolicyPeriod
-# TODO: gamma an Erlebensleistungen?
+#' Initialize a cost matrix with dimensions: [CostType, Basis, Period], with:
+#'     CostType: alpha, Zillmer, beta, gamma, gamma_nopremiums
+#'     Basis:    SumInsured, SumPremiums, GrossPremium
+#'     Period:   once, PremiumPeriod, PremiumFree, PolicyPeriod
+#' TODO: gamma an Erlebensleistungen?
+#' @export
 initializeCosts = function() {
   dimnm=list(
     c("alpha", "Zillmer", "beta", "gamma", "gamma_nopremiums"),
@@ -20,6 +21,7 @@ initializeCosts = function() {
 }
 
 
+#' @export
 InsuranceContract.Values = list(
   basicData = NULL,
   transitionProbabilities = NULL,
@@ -45,7 +47,8 @@ InsuranceContract.Values = list(
 
 
 
-InsuranceContract.ParameterStructure = list(
+#' @export
+InsuranceContract.ParameterDefaults = list(
   ContractData = list (
     sumInsured = NULL,
     YOB = NULL,
@@ -138,6 +141,17 @@ InsuranceContract.ParametersFill = function(params=InsuranceContract.ParameterSt
     params
 }
 
+#' InsuranceContract.ParametersFallback
+#'
+#' Provide default values for the insurance contract parameters if any of the
+#' parameters is not explicitly set.
+#'
+#' @param params Current, explicitly set contract parameters. All NULL values
+#'               will be filled with the corresponding entry from \code{fallback}.
+#' @param fallback Fallback values that will be used when the corresponding
+#'                 entry in \code{params} is NULL.
+#'
+#' @export
 InsuranceContract.ParametersFallback = function(params, fallback) {
     # params = InsuranceContract.ParameterStructure;
     params$ContractData = fallbackFields(params$ContractData, fallback$ContractData);
diff --git a/R/InsuranceTarif.R b/R/InsuranceTarif.R
index 4a2af5bf6eac2513b1bab3b06b91cd31b19103ea..dbd0b54fcce0dd036be048c611764c588a288f97 100644
--- a/R/InsuranceTarif.R
+++ b/R/InsuranceTarif.R
@@ -5,19 +5,20 @@
 #' @import lubridate
 NULL
 
-# library(R6)
-# library(lifecontingencies)
-# library(objectProperties)
-# library(lubridate)
-
 
 TariffTypeEnum = setSingleEnum("TariffType", levels = c("annuity", "wholelife", "endowment", "pureendowment", "terme-fix", "dread-disease"))
 
 
-# base class for Insurance Tarifs (holding contrat-independent values and
-# providing methods to calculate cash flows, premiums, etc.). Objects of this
-# class do NOT contain contract-specific values like age, death probabilities,
-# premiums, reserves, etc.
+#' Base class for Insurance Tarifs, providing calculation functions to the contract
+#'
+#' This is a base class for holding contract-independent values and
+#' providing methods to calculate cash flows, premiums, etc. Objects of this
+#' class do NOT contain contract-specific values like age, death probabilities,
+#' premiums, reserves, etc. Rather, they are the calculation kernels that will
+#' be called by the \code{\link{InsuranceContract}} objects to make the actual,
+#' tariff-specific calculations.
+#'
+#' @export
 InsuranceTarif = R6Class(
   "InsuranceTarif",
   public  = list(
diff --git a/R/ProfitParticipation.R b/R/ProfitParticipation.R
index c1eaa268867465418d34b8060c69cc43f6e72087..1a42ae3fc65fc15e7fc64fdddc62dad007201977 100644
--- a/R/ProfitParticipation.R
+++ b/R/ProfitParticipation.R
@@ -3,11 +3,15 @@
 #' @import R6
 NULL
 
-# library(R6)
 
-# base class for Profit Participation schemes  (holding contract-independent values and
-# providing methods to calculate the profit participation values from the given
-# reserves).
+
+#' Base Class for Profit Participation Schemes
+#'
+#' base class for Profit Participation schemes  (holding contract-independent values and
+#' providing methods to calculate the profit participation values from the given
+#' reserves).
+#'
+#' @export
 ProfitParticipation = R6Class(
   "ProfitParticipation",
   public  = list(
diff --git a/R/exportInsuranceContract_xlsx.R b/R/exportInsuranceContract_xlsx.R
index ebaf9613f7cc3f5195a092e00950c9e8422253a3..4855fad6e4b3f6f5082fb0fca11e5f1bc729b00f 100644
--- a/R/exportInsuranceContract_xlsx.R
+++ b/R/exportInsuranceContract_xlsx.R
@@ -1,5 +1,12 @@
-#' @include HelperFunctions.R
-library(openxlsx)
+#' @include HelperFunctions.R InsuranceContract.R InsuranceParameters.R InsuranceTarif.R ProfitParticipation.R
+#'
+#' @import openxlsx
+#' @import ValuationTables
+#' @import R6
+#' @import lubridate
+NULL
+
+
 
 ################################################
 # Helper Functions
@@ -180,6 +187,7 @@ setInsuranceValuesLabels = function(vals) {
 ################################################################################
 
 
+#' @export
 exportInsuranceContract.xlsx = function(contract, filename) {
   # TODO: argument checking for contract and filename