diff --git a/.Rbuildignore b/.Rbuildignore
new file mode 100644
index 0000000000000000000000000000000000000000..91114bf2f2bba5e0c5252e75018da19b869776f1
--- /dev/null
+++ b/.Rbuildignore
@@ -0,0 +1,2 @@
+^.*\.Rproj$
+^\.Rproj\.user$
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..807ea251739a053faee6d72fe9dc3ae80d80cc15
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+.Rproj.user
+.Rhistory
+.RData
diff --git a/DESCRIPTION b/DESCRIPTION
new file mode 100644
index 0000000000000000000000000000000000000000..0d7be5c3660265276a3e7a7b94fcd2ea00cc726e
--- /dev/null
+++ b/DESCRIPTION
@@ -0,0 +1,9 @@
+Package: ValuationTables
+Type: Package
+Title: What the package does (short line)
+Version: 1.0
+Date: 2013-05-03
+Author: Who wrote it
+Maintainer: Who to complain to <yourfault@somewhere.net>
+Description: More about what it does (maybe more than one line)
+License: What license is it under?
diff --git a/NAMESPACE b/NAMESPACE
new file mode 100644
index 0000000000000000000000000000000000000000..d75f824ec6278db24891505b14ab3d915514dba7
--- /dev/null
+++ b/NAMESPACE
@@ -0,0 +1 @@
+exportPattern("^[[:alpha:]]+")
diff --git a/R/S4classes.R b/R/S4classes.R
new file mode 100644
index 0000000000000000000000000000000000000000..42f5e357712ce2dc6d8ae5c4ffb91926eec4cbda
--- /dev/null
+++ b/R/S4classes.R
@@ -0,0 +1,119 @@
+library("lifecontingencies");
+
+# (virtual) base class for valuation tables, contains only the name / ID
+valuationTable=setClass(
+  "valuationTable", 
+  slots=list(name="character"), 
+  prototype=list(name="Actuarial Valuation Table"), 
+  contains="VIRTUAL"
+);
+
+
+# A period life table, giving death probabilities for each age, up to 
+# maximum age omega. Optionally apply selection factors to the probabilities
+valuationTable.period=setClass(
+  "valuationTable.period", 
+  slots=list(ages="numeric", deathProbs="numeric"),
+  prototype=list(ages=eval(0:120), deathProbs=rep(1,120)),
+  contains="valuationTable"
+);
+
+# A cohort life table, obtained by age-shifting from a given base table (PODs 
+# for a base YOB)
+valuationTable.ageShift=setClass(
+  "valuationTable.ageShift", 
+  slots=list(ageShifts="data.frame"),
+  prototype=list(ageShifts=data.frame(YOB=c(), shifts=c())),
+  contains="valuationTable.period"
+);
+
+# A cohort life table, obtained by a trend projection from a given base table
+# (PODs for a given observation year). Typically, the trend is obtained by
+# the Lee-Carter method or some other trend estimation.
+# The dampingFunction can be used to modify the cumulative years (e.g. G(tau+x) instead of tau+x)
+# If trend2 is given, the G(tau+x) gives the weight of the first trend, 1-G(tau+x) the weight of the second trend
+valuationTable.trendProjection=setClass(
+  "valuationTable.trendProjection", 
+  slots=list(baseYear="numeric", trend="numeric", dampingFunction="function", trend2="numeric"),
+  prototype=list(baseYear=1980, trend=rep(0,120), dampingFunction=identity, trend2=0),
+  contains="valuationTable.period"
+);
+
+# A cohort life table, obtained by an improvment factor projection 
+# from a given base table (PODs for a given observation year).
+valuationTable.improvementFactors=setClass(
+  "valuationTable.improvementFactors", 
+  slots=list(baseYear="numeric", improvement="numeric"),
+  prototype=list(baseYear=2012, improvement=rep(0,120)),
+  contains="valuationTable.period"
+);
+
+# A cohort life table described by actual observations (data frame of PODs 
+# per year and age)
+valuationTable.observed=setClass(
+  "valuationTable.observed", 
+  slots=list(data="data.frame"),
+  prototype=list(data=data.frame()),
+  contains="valuationTable"
+);
+
+# A cohort life table obtained by joining two cohort life tables, each of which
+# applies only to certain observation years (e.g. for the past use the observed
+# PODs, and project them to the future with the trend projection)
+valuationTable.joined=setClass(
+  "valuationTable.joined", 
+  slots=list(
+    table1="valuationTable", yearRange1="numeric", 
+    table2="valuationTable", yearRange2="numeric"),
+  contains="valuationTable"
+);
+
+
+
+setGeneric("getOmega", function(object) standardGeneric("getOmega"));
+setMethod("getOmega", "valuationTable.period",
+          function (object) {
+            max(object@ages,na.rm=TRUE);
+          })
+
+setGeneric("deathProbabilities", function(object, ..., YOB=1975) standardGeneric("deathProbabilities"));
+setMethod("deathProbabilities", "valuationTable.period",
+          function(object, ..., YOB=1975) {
+            object@deathProbs;
+          })
+setMethod("deathProbabilities","valuationTable.ageShift",
+          function (object,  ..., YOB=1975) {
+            qx=object@deathProbs;
+            shift.index=match(YOB, object@shifts, YOB);
+            if (shift.index) {}
+ #           shift=
+            qx
+          })
+setMethod("deathProbabilities","valuationTable.trendProjection",
+          function (object,  ..., YOB=1975) {
+            qx=object@deathProbs;
+            if (length(object@trend2)<=1) {
+#print("length(object@trend2)==0");
+              exp(-object@trend*object@dampingFunction(YOB+0:(length(qx)-1)-object@baseYear))*qx
+            } else {
+#print("length(object@trend2)!=0");
+#print(length(object@trend2));
+              # dampingFunction interpolates between the two trends:
+              weights=sapply(YOB+0:(length(qx)-1), object@dampingFunction);
+              qx*exp(-(object@trend*(1-weights) + object@trend2*(weights))*(YOB+0:(length(qx)-1)-object@baseYear))
+            }
+          })
+setMethod("deathProbabilities","valuationTable.improvementFactors",
+          function (object,  ..., YOB=1975) {
+            qx=object@deathProbs;
+            (1-object@improvement)^(YOB+0:(length(qx)-1)-object@baseYear)*qx
+          })
+setGeneric("lifeTable", function(object, ...) standardGeneric("lifeTable"));
+setMethod("lifeTable","valuationTable",
+          function (object,  ...) {
+            qx=deathProbabilities(object, ...);
+            if (qx[[length(qx)]]!=1) { qx=c(qx, 1, 1); }
+            probs2lifetable(qx, type="qx")
+          })
+
+
diff --git a/R/ValuationTables_Austria_Annuities.R b/R/ValuationTables_Austria_Annuities.R
new file mode 100644
index 0000000000000000000000000000000000000000..65f4ca36f47102f14ef79db65cea8de1c46bfd89
--- /dev/null
+++ b/R/ValuationTables_Austria_Annuities.R
@@ -0,0 +1,215 @@
+frame_files = lapply(sys.frames(), function(x) x$ofile)
+frame_files = Filter(Negate(is.null), frame_files)
+PATH <- dirname(frame_files[[length(frame_files)]])
+rm(frame_files)
+setwd(dirname(PATH))
+
+library("gdata")
+
+
+
+###############################################################################
+### RR67 Rententafel für Männer, 3%
+###############################################################################
+
+rr67.data=read.xls(
+  "Tafeln/AVOe_R.xls", 
+  sheet="OeVM59-61 RR67", skip=1, #row.names=1, 
+  col.names=c("age","qx"));
+
+rr67=valuationTable.period(
+  name="ÖVM 59/61 RR67", ages=rr67.data$age, deathProbs=rr67.data$qx
+);
+# rm(rr67.data);
+
+
+###############################################################################
+### EROM/EROF 85 and G 1985 (period and age-shifted generation)
+###############################################################################
+
+eromf.data=read.xls(
+  "Tafeln/AVOe_R.xls", 
+  sheet="EROM-F Basistafeln", skip=2, #row.names=1, 
+  col.names=c("age", "EROM85", "EROF85", "EROMG1950", "EROFG1950")
+);
+
+
+erom85.male=valuationTable.period(
+  name="EROM 85, male", ages=eromf.data$age, deathProbs=eromf.data$EROM85
+);
+erom85.female=valuationTable.period(
+  name="EROF 85, female", ages=eromf.data$age, deathProbs=eromf.data$EROF85
+);
+
+EROM.G1950.male=valuationTable.period(
+  name="EROM G 1950 Basistafel, male",
+  ages=eromf.data$age,
+  deathProbs=eromf.data$EROMG1950
+);
+EROF.G1950.female=valuationTable.period(
+  name="EROF G 1950 Basistafel, female",
+  ages=eromf.data$age,
+  deathProbs=eromf.data$EROFG1950
+);
+
+eromf.data.av=read.xls(
+  "Tafeln/AVOe_R.xls", 
+  sheet="EROM-F G AV", skip=1, row.names=1, 
+ col.names=c("YOB", "shiftM", "shiftF")
+);
+
+EROM.G1950.male.av=valuationTable.ageShift(
+  name="EROM G 1950 mit Altersverschiebung, male",
+  ages=eromf.data$age,
+  deathProbs=eromf.data$EROMG1950,
+  ageShifts=eromf.data.av[1]
+);
+EROF.G1950.female.av=valuationTable.ageShift(
+  name="EROF G 1950 mit Altersverschiebung, female",
+  ages=eromf.data$age,
+  deathProbs=eromf.data$EROFG1950,
+  ageShifts=eromf.data.av[2]
+);
+
+
+###############################################################################
+# AVÖ 1996R exact (Male, Female), 1st-order only
+###############################################################################
+
+avoe1996r.exakt.data=read.xls(
+  "Tafeln/AVOe_R.xls", 
+  sheet="AVOe 1996R exakt", skip=2, #row.names=1, 
+  col.names=c("age",
+              "q1991M", "trendM.long", "trendM.short", "factorMG", "factorM",
+              "",
+              "q1991F", "trendF.long", "trendF.short", "factorFG", "factorF",
+              rep("",12))
+);
+avoe1996r.trend.switching=function(year) {
+  if (year<=1971) {
+    15/(1991-year)
+  } else if (1971<year && year<1981) {
+    1+(year-1981)^2/(year-1991)/20
+  } else if (1981<=year && year<=2000) {
+    1
+  } else if (2000<year && year<2010) {
+    1-(year-2000)^2/(year-1991)/20
+  } else if (year>=2010) {
+    14/(year-1991)
+  }
+}
+
+AVÖ1996R.male=valuationTable.trendProjection(
+  name="AVÖ 1996R male",
+  ages=avoe1996r.exakt.data$age, baseYear=1991,
+  deathProbs=avoe1996r.exakt.data$q1991M*avoe1996r.exakt.data$factorM, 
+  trend=avoe1996r.exakt.data$trendM.long,
+  trend2=avoe1996r.exakt.data$trendM.short,
+  dampingFunction=avoe1996r.trend.switching
+);
+AVÖ1996R.female=valuationTable.trendProjection(
+  name="AVÖ 1996R female",
+  ages=avoe1996r.exakt.data$age, baseYear=1991,
+  deathProbs=avoe1996r.exakt.data$q1991F*avoe1996r.exakt.data$factorF, 
+  trend=avoe1996r.exakt.data$trendF.long,
+  trend2=avoe1996r.exakt.data$trendF.short,
+  dampingFunction=avoe1996r.trend.switching
+);
+AVÖ1996R.male.group=valuationTable.trendProjection(
+  name="AVÖ 1996R male, group",
+  ages=avoe1996r.exakt.data$age, baseYear=1991,
+  deathProbs=avoe1996r.exakt.data$q1991M*avoe1996r.exakt.data$factorMG, 
+  trend=avoe1996r.exakt.data$trendM.long,
+  trend2=avoe1996r.exakt.data$trendM.short,
+  dampingFunction=avoe1996r.trend.switching
+);
+AVÖ1996R.female.group=valuationTable.trendProjection(
+  name="AVÖ 1996R female, group",
+  ages=avoe1996r.exakt.data$age, baseYear=1991,
+  deathProbs=avoe1996r.exakt.data$q1991F*avoe1996r.exakt.data$factorFG, 
+  trend=avoe1996r.exakt.data$trendF.long,
+  trend2=avoe1996r.exakt.data$trendF.short,
+  dampingFunction=avoe1996r.trend.switching
+);
+
+
+
+###############################################################################
+# AVÖ 2005R exact (Male, Female, unisex)
+# gender-specific tables also have 2nd-order tables, unisex only 1st-order table
+###############################################################################
+
+avoe2005r.exakt.data=read.xls(
+  "Tafeln/AVOe_R.xls", 
+  sheet="AVOe 2005R", skip=1, #row.names=1, 
+  header=FALSE,
+  col.names=c("age", 
+              "q2001M","q2001MG", "trendM", 
+              "q2001F", "q2001FG", "trendF", 
+              "", 
+              "q2001M.2Ord", "2001MG.2Ord", "trendM.2Ord", 
+              "q2001F.2Ord", "q2001FG.2Ord", "trendF.2Ord", 
+              "", 
+              "q2001U", "q2001UG", "trendU")
+);
+
+avoe2005r.trend.damping=function(t) {
+  100*atan(t/100)
+}
+avoe2005r_gen=function(nm, probs, trend) {
+  with(
+    avoe2005r.exakt.data,
+    valuationTable.trendProjection(
+      name=nm,
+      ages=age, baseYear=2001,
+      deathProbs=avoe2005r.exakt.data[[probs]], trend=avoe2005r.exakt.data[[trend]],
+      dampingFunction=avoe2005r.trend.damping
+    )
+  )
+}
+
+avoe2005r.male  =avoe2005r_gen("AVÖ 2005R male (exact), loaded",   "q2001M", "trendM");
+avoe2005r.female=avoe2005r_gen("AVÖ 2005R female (exact), loaded", "q2001F", "trendF");
+avoe2005r.unisex=avoe2005r_gen("AVÖ 2005R unisex (exact), loaded", "q2001U", "trendU");
+avoe2005r.male.unloaded  =avoe2005r_gen("AVÖ 2005R male (exact), unloaded",   "q2001M.2Ord", "trendM.2Ord");
+avoe2005r.female.unloaded=avoe2005r_gen("AVÖ 2005R female (exact), unloaded", "q2001F.2Ord", "trendF.2Ord");
+avoe2005r.male.group  =avoe2005r_gen("AVÖ 2005R male group (exact), loaded",   "q2001MG", "trendM");
+avoe2005r.female.group=avoe2005r_gen("AVÖ 2005R female group (exact), loaded", "q2001FG", "trendF");
+avoe2005r.unisex.group=avoe2005r_gen("AVÖ 2005R unisex group (exact), loaded", "q2001UG", "trendU");
+
+
+###############################################################################
+#AVÖ 2005R with age-shifting (Male, Female, unisex), 1st-order only
+###############################################################################
+
+avoe2005r.av.base=read.xls(
+  "Tafeln/AVOe_R.xls", 
+  sheet="AVOe 2005R AV Basistafel", skip=1, # row.names=1,
+  col.names=c("age", "q1965M", "q1965MG", "q1965F", "q1965FG", "q1972U", "q1972UG")
+);
+
+avoe2005r.av.verschiebung=read.xls(
+  "Tafeln/AVOe_R.xls", 
+  sheet="AVOe 2005R AV Verschiebung",skip=2,row.names=1,
+  col.names=c("YOB", "shiftM", "shiftMG", "shiftF", "shiftFG", "shiftU", "shiftUG")
+)
+
+avoe2005r_gen.av=function(nm, probs, shft) {
+  valuationTable.ageShift(
+    name=nm,
+    ages=avoe2005r.av.base$age,
+    deathProbs=avoe2005r.av.base[[probs]],
+    ageShifts=na.omit(avoe2005r.av.verschiebung[shft])
+  )
+}
+
+avoe2005r.male.av  =avoe2005r_gen.av("AVÖ 2005R male (age-shifted), loaded",   "q1965M", "shiftM");
+avoe2005r.female.av=avoe2005r_gen.av("AVÖ 2005R female (age-shifted), loaded", "q1965F", "shiftF");
+avoe2005r.unisex.av=avoe2005r_gen.av("AVÖ 2005R unisex (age-shifted), loaded", "q1972U", "shiftU");
+avoe2005r.male.group.av  =avoe2005r_gen.av("AVÖ 2005R male group (age-shifted), loaded",   "q1965MG", "shiftMG");
+avoe2005r.female.group.av=avoe2005r_gen.av("AVÖ 2005R female group (age-shifted), loaded", "q1965FG", "shiftFG");
+avoe2005r.unisex.group.av=avoe2005r_gen.av("AVÖ 2005R unisex group (age-shifted), loaded", "q1972UG", "shiftUG");
+
+
+
+###############################################################################
diff --git a/R/ValuationTables_Germany_Annuities.R b/R/ValuationTables_Germany_Annuities.R
new file mode 100644
index 0000000000000000000000000000000000000000..13c2cf014002a3efd87415596b79935d75cf91b0
--- /dev/null
+++ b/R/ValuationTables_Germany_Annuities.R
@@ -0,0 +1,91 @@
+frame_files = lapply(sys.frames(), function(x) x$ofile)
+frame_files = Filter(Negate(is.null), frame_files)
+PATH <- dirname(frame_files[[length(frame_files)]])
+rm(frame_files)
+
+setwd(dirname(PATH))
+
+library("gdata")
+
+
+###############################################################################
+# DAV 1994R exact (Male, Female), 1st-order only
+###############################################################################
+
+DAV1994R.exakt.data=read.xls(
+  "Tafeln/DAV_R.xls", 
+  sheet="DAV 1994R", skip=2, #row.names=1, 
+  col.names=c("age",
+              "qx2000", "qy2000", "trendM", "trendF", "qxAVbase1955", "qyAVbase1955",
+              "", "", "", "", "", "")
+);
+
+DAV1994R.male=valuationTable.trendProjection(
+  name="DAV 1994R male",
+  ages=DAV1994R.exakt.data$age, baseYear=2000,
+  deathProbs=DAV1994R.exakt.data$qx2000, 
+  trend=DAV1994R.exakt.data$trendM
+);
+DAV1994R.female=valuationTable.trendProjection(
+  name="DAV 1994R female",
+  ages=DAV1994R.exakt.data$age, baseYear=2000,
+  deathProbs=DAV1994R.exakt.data$qy2000, 
+  trend=DAV1994R.exakt.data$trendF
+);
+
+
+###############################################################################
+# DAV 2004R exact (Male, Female), 1st-order only
+###############################################################################
+
+DAV2004R.data.basistafeln=read.xls(
+  "Tafeln/DAV_2004_R.xls", 
+  sheet="Basistafeln", skip=3, #row.names=1, 
+  col.names=c("age",
+              "qxSel2Ord", "qySel2Ord", "qxAgg2Ord", "qyAgg2Ord", 
+              "qxSelBestand", "qySelBestand", "qxAggBestand", "qyAggBestand", 
+              "qxSel", "qySel", "qxAgg", "qyAgg")
+);
+DAV2004R.data.trend=read.xls(
+  "Tafeln/DAV_2004_R.xls", 
+  sheet="Trends", skip=4, header=FALSE, #row.names=1, 
+  col.names=c("age",
+              "trend2Ord.male.start", "trend2Ord.female.start",
+              "trend2Ord.male.end", "trend2Ord.female.end",
+              "trendBestand.male.start", "trendBestand.female.start",
+              "trendBestand.male.end", "trendBestand.female.end",
+              "trend1Ord.male", "trend1Ord.female")
+);
+DAV2004R.data.select=read.xls(
+  "Tafeln/DAV_2004_R.xls", 
+  sheet="Selektionsfaktoren", skip=2, header=FALSE, #row.names=1, 
+  col.names=c("year", "SelectMale", "SelectFemale")
+);
+DAV2004R.data.av.grundtafeln=read.xls(
+  "Tafeln/DAV_2004_R.xls", 
+  sheet="Grundtafeln", skip=3, #row.names=1, 
+  col.names=c("age",
+              "qxBestand", "qyBestand",
+              "qxB20", "qyB20",
+              "qx1Ord", "qy1Ord")
+);
+DAV2004R.data.av=read.xls(
+  "Tafeln/DAV_2004_R.xls", 
+  sheet="Altersverschiebungen", skip=1, row.names=1, 
+  col.names=c("YOB", "shiftMBestand", "shiftFBestand",
+              "shiftMB20", "shiftFB20",
+              "shiftM1Ord", "shiftF1Ord")
+);
+
+DAV2004R.male=valuationTable.trendProjection(
+  name="DAV 2004R male",
+  ages=DAV2004R.exakt.data$age, baseYear=2000,
+  deathProbs=DAV2004R.exakt.data$qx2000, 
+  trend=DAV2004R.exakt.data$trendM
+);
+DAV2004R.female=valuationTable.trendProjection(
+  name="DAV 2004R female",
+  ages=DAV2004R.exakt.data$age, baseYear=2000,
+  deathProbs=DAV2004R.exakt.data$qy2000, 
+  trend=DAV2004R.exakt.data$trendF
+);
diff --git a/R/ValuationTables_Germany_LifeInsurance.R b/R/ValuationTables_Germany_LifeInsurance.R
new file mode 100644
index 0000000000000000000000000000000000000000..9d93f5f1b98b3c3bd2ebd68d266f5639d7c12138
--- /dev/null
+++ b/R/ValuationTables_Germany_LifeInsurance.R
@@ -0,0 +1,94 @@
+frame_files = lapply(sys.frames(), function(x) x$ofile)
+frame_files = Filter(Negate(is.null), frame_files)
+PATH <- dirname(frame_files[[length(frame_files)]])
+rm(frame_files)
+
+setwd(dirname(PATH))
+
+library("gdata")
+
+
+# DAV1994T (Male, Female), 1st-order and general mortality 1986/88
+dav1994T.data=read.xls(
+  "Tafeln/DAV_T.xls", 
+  sheet=1, skip=1, #row.names=1, 
+  col.names=c("age",
+              "", "", 
+              "qx2", "qxKI", "qx",
+              "", "", "",
+              "qy2", "qyKI", "qy"
+));
+
+dav1994t.male=valuationTable.period(
+  name="DAV 1994T male, loaded",
+  ages=dav1994T.data$age, deathProbs=dav1994T.data$qx)
+dav1994t.male.2Ord=valuationTable.period(
+  name="DAV 1994T male, unloaded",
+  ages=dav1994T.data$age, deathProbs=dav1994T.data$qx2)
+dav1994t.female=valuationTable.period(
+  name="DAV 1994T female, loaded",
+  ages=dav1994T.data$age, deathProbs=dav1994T.data$qy)
+dav1994t.female.2Ord=valuationTable.period(
+  name="DAV 1994T female, unloaded",
+  ages=dav1994T.data$age, deathProbs=dav1994T.data$qy2)
+
+rm(dav1994T.data)
+
+######################################################
+##  DAV 2008T Aggregat / Smoker / Non-Smoker
+######################################################
+
+dav2008T.data=read.xls(
+  "Tafeln/DAV_T.xls", 
+  sheet=2, skip=2, #row.names=1, 
+  col.names=c("age", "", "", "",
+              "qx2", "qx2NR", "qx2R",
+              "qx1", "qx1NR", "qx1R",
+              "", "", "", "",
+              "qy2", "qy2NR", "qy2R",
+              "qy1", "qy1NR", "qy1R"
+));
+
+### DAV 2008T Aggregat (smoker+non-smoker combined)
+dav2008t.male=valuationTable.period(
+  name="DAV 2008T male, loaded",
+  ages=dav2008T.data$age, deathProbs=dav2008T.data$qx1)
+dav2008t.male.2Ord=valuationTable.period(
+  name="DAV 2008T male, unloaded",
+  ages=dav2008T.data$age, deathProbs=dav2008T.data$qx2)
+dav2008t.female=valuationTable.period(
+  name="DAV 2008T female, loaded",
+  ages=dav2008T.data$age, deathProbs=dav2008T.data$qy1)
+dav2008t.female.2Ord=valuationTable.period(
+  name="DAV 2008T female, unloaded",
+  ages=dav2008T.data$age, deathProbs=dav2008T.data$qy2)
+
+### DAV 2008T Smoker
+dav2008t.male.smoker=valuationTable.period(
+  name="DAV 2008T male smoker, loaded",
+  ages=dav2008T.data$age, deathProbs=dav2008T.data$qx1R)
+dav2008t.male.smoker.2Ord=valuationTable.period(
+  name="DAV 2008T male smoker, unloaded",
+  ages=dav2008T.data$age, deathProbs=dav2008T.data$qx2R)
+dav2008t.female.smoker=valuationTable.period(
+  name="DAV 2008T female smoker, loaded",
+  ages=dav2008T.data$age, deathProbs=dav2008T.data$qy1R)
+dav2008t.female.smoker.2Ord=valuationTable.period(
+  name="DAV 2008T female smoker, unloaded",
+  ages=dav2008T.data$age, deathProbs=dav2008T.data$qy2R)
+
+### DAV 2008T Non-Smoker
+dav2008t.male.nonsmoker=valuationTable.period(
+  name="DAV 2008T male non-smoker, loaded",
+  ages=dav2008T.data$age, deathProbs=dav2008T.data$qx1NR)
+dav2008t.male.nonsmoker.2Ord=valuationTable.period(
+  name="DAV 2008T male non-smoker, unloaded",
+  ages=dav2008T.data$age, deathProbs=dav2008T.data$qx2NR)
+dav2008t.female.nonsmoker=valuationTable.period(
+  name="DAV 2008T female non-smoker, loaded",
+  ages=dav2008T.data$age, deathProbs=dav2008T.data$qy1NR)
+dav2008t.female.nonsmoker.2Ord=valuationTable.period(
+  name="DAV 2008T female non-smoker, unloaded",
+  ages=dav2008T.data$age, deathProbs=dav2008T.data$qy2NR)
+
+rm(dav2008T.data);
diff --git a/R/ValuationTables_USA_Annuities.R b/R/ValuationTables_USA_Annuities.R
new file mode 100644
index 0000000000000000000000000000000000000000..6674c685383a414eaeef70146050f7ff05c59535
--- /dev/null
+++ b/R/ValuationTables_USA_Annuities.R
@@ -0,0 +1,164 @@
+frame_files = lapply(sys.frames(), function(x) x$ofile)
+frame_files = Filter(Negate(is.null), frame_files)
+PATH <- dirname(frame_files[[length(frame_files)]])
+rm(frame_files)
+setwd(dirname(PATH))
+
+library("gdata")
+
+
+###############################################################################
+### 1971 IAM individual annuity table; with optional projection scale B_x
+###############################################################################
+
+USA1971IAM.data=read.xls(
+  "Tafeln/USA_Annuities.xls", 
+  sheet="1971 IAM", skip=2, #row.names=1, 
+  col.names=c("age","qx", "qy", "B"));
+
+USA1971IAM.male=valuationTable.period (
+  name="USA 1971 IAM, male",
+  ages=USA1971IAM.data$age,
+  deathProbs=USA1971IAM.data$qx)
+USA1971IAM.female=valuationTable.period (
+  name="USA 1971 IAM, female",
+  ages=USA1971IAM.data$age,
+  deathProbs=USA1971IAM.data$qy)
+
+USA1971IAM.male.projected=valuationTable.improvementFactors (
+  name="USA 1971 IAM, male",
+  ages=USA1971IAM.data$age, baseYear=1971,
+  deathProbs=USA1971IAM.data$qx,
+  improvement=USA1971IAM.data$B)
+USA1971IAM.female.projected=valuationTable.improvementFactors (
+  name="USA 1971 IAM, female",
+  ages=USA1971IAM.data$age, baseYear=1971,
+  deathProbs=USA1971IAM.data$qy,
+  improvement=USA1971IAM.data$B)
+
+rm(USA1971IAM.data);
+
+
+###############################################################################
+### 1983 Table "a" (individual) and GAM (group annuities), period tables
+###############################################################################
+
+USA1983a.data=read.xls(
+  "Tafeln/USA_Annuities.xls", 
+  sheet="1983a - GAM", skip=2,
+  col.names=c("age","qx", "qy", "qxG", "qyG"));
+
+USA1983a.male=valuationTable.period (
+  name="USA 1983 Table a, male",
+  ages=USA1983a.data$age,
+  deathProbs=USA1983a.data$qx)
+USA1983a.female=valuationTable.period (
+  name="USA 1983 Table a, female",
+  ages=USA1983a.data$age,
+  deathProbs=USA1983a.data$qy)
+
+USA1983GAM.male=valuationTable.period (
+  name="USA 1983 GAM, male",
+  ages=USA1983a.data$age,
+  deathProbs=USA1983a.data$qxG)
+USA1983GAM.female=valuationTable.period (
+  name="USA 1983 GAM, female",
+  ages=USA1983a.data$age,
+  deathProbs=USA1983a.data$qyG)
+
+rm(USA1983a.data);
+
+
+###############################################################################
+### 1994 GAR/GAM group annuity tables, with improvement factors AA_x
+###############################################################################
+
+USA1994GAM.data=read.xls(
+  "Tafeln/USA_Annuities.xls", 
+  sheet="1994 GAR", skip=2,
+  col.names=c("age","qx", "AAx", "qy", "AAy", "qxBasic", "qyBasic"));
+
+USA1994GAM.male.basic=valuationTable.period (
+  name="USA 1994 GAM basic (unloaded), male",
+  ages=USA1994GAM.data$age,
+  deathProbs=USA1994GAM.data$qxBasic)
+USA1994GAM.female.basic=valuationTable.period (
+  name="USA 1994 GAM basic (unloaded), female",
+  ages=USA1994GAM.data$age,
+  deathProbs=USA1994GAM.data$qyBasic)
+
+USA1994GAR.male=valuationTable.improvementFactors (
+  name="USA 1994 GAM, male",
+  ages=USA1994GAM.data$age,
+  deathProbs=USA1994GAM.data$qx,
+  improvement=USA1994GAM.data$AAx)
+USA1994GAR.female=valuationTable.improvementFactors (
+  name="USA 1994 GAM, female",
+  ages=USA1994GAM.data$age,
+  deathProbs=USA1994GAM.data$qy,
+  improvement=USA1994GAM.data$AAy)
+
+rm(USA1994GAM.data);
+
+
+###############################################################################
+### Annuity 2000 Basic (unloaded) and Mortality (loaded) Tables, PERIOD tables
+###############################################################################
+
+USAAnnuity2000.data=read.xls(
+  "Tafeln/USA_Annuities.xls", 
+  sheet="Annuity 2000", skip=2, #row.names=1, 
+  col.names=c("age","qxBasic", "qyBasic", "qx", "qy"));
+
+USAAnnuity2000.basic.male=valuationTable.period (
+  name="USA Annuity 2000 basic, male",
+  ages=USAAnnuity2000.data$age,
+  deathProbs=USAAnnuity2000.data$qxBasic)
+USAAnnuity2000.basic.female=valuationTable.period (
+  name="USA Annuity 2000 basic, female",
+  ages=USAAnnuity2000.data$age,
+  deathProbs=USAAnnuity2000.data$qyBasic)
+
+USAAnnuity2000.male.projected=valuationTable.period (
+  name="USA Annuity 2000, male",
+  ages=USAAnnuity2000.data$age,
+  deathProbs=USAAnnuity2000.data$qx)
+USAAnnuity2000.female.projected=valuationTable.period (
+  name="USA Annuity 2000, female",
+  ages=USAAnnuity2000.data$age,
+  deathProbs=USAAnnuity2000.data$qy)
+
+rm(USAAnnuity2000.data);
+
+
+###############################################################################
+### 1994 GAR/GAM group annuity tables, with improvement factors AA_x
+###############################################################################
+
+USA2012IAM.data=read.xls(
+  "Tafeln/USA_Annuities.xls", 
+  sheet="2012 IAR", skip=3,
+  col.names=c("age","qxBasic", "qyBasic", "qx", "qy", "G2x", "G2y", "", "", ""));
+
+USA2012IAM.male.basic=valuationTable.period (
+  name="USA 2012 IAM basic (unloaded), male",
+  ages=USA2012IAM.data$age,
+  deathProbs=USA2012IAM.data$qxBasic)
+USA2012IAM.female.basic=valuationTable.period (
+  name="USA 2012 IAM basic (unloaded), female",
+  ages=USA2012IAM.data$age, omega=max(USA2012IAM.data$age,rm.na=TRUE)+1,
+  deathProbs=USA2012IAM.data$qyBasic)
+
+USA2012IAM.male=valuationTable.improvementFactors (
+  name="USA 2012 IAM, male",
+  ages=USA2012IAM.data$age, omega=max(USA2012IAM.data$age,rm.na=TRUE)+1,
+  deathProbs=USA2012IAM.data$qx,
+  improvement=USA2012IAM.data$G2x)
+USA2012IAM.female=valuationTable.improvementFactors (
+  name="USA 2012 IAM, female",
+  ages=USA2012IAM.data$age, omega=max(USA2012IAM.data$age,rm.na=TRUE)+1,
+  deathProbs=USA2012IAM.data$qy,
+  improvement=USA2012IAM.data$G2y)
+
+rm(USA2012IAM.data);
+
diff --git a/Read-and-delete-me b/Read-and-delete-me
new file mode 100644
index 0000000000000000000000000000000000000000..dcaca43dc12db133b1fddbf1bb81ae8798db3e01
--- /dev/null
+++ b/Read-and-delete-me
@@ -0,0 +1,8 @@
+* Edit the help file skeletons in 'man', possibly combining help files for multiple functions.
+* Edit the exports in 'NAMESPACE', and add necessary imports.
+* Put any C/C++/Fortran code in 'src'.
+* If you have compiled code, add a useDynLib() directive to 'NAMESPACE'.
+* Run R CMD build to build the package tarball.
+* Run R CMD check to check the package tarball.
+
+Read "Writing R Extensions" for more information.
diff --git a/Tafeln/AVOe_R.xls b/Tafeln/AVOe_R.xls
new file mode 100644
index 0000000000000000000000000000000000000000..3518b2676801a42cc8c64b1a82e6992a108287c3
Binary files /dev/null and b/Tafeln/AVOe_R.xls differ
diff --git a/Tafeln/DAV_2004_R.xls b/Tafeln/DAV_2004_R.xls
new file mode 100644
index 0000000000000000000000000000000000000000..8e9190957e4f858e9ba4de2fab5660fe6d420526
Binary files /dev/null and b/Tafeln/DAV_2004_R.xls differ
diff --git a/Tafeln/DAV_R.xls b/Tafeln/DAV_R.xls
new file mode 100644
index 0000000000000000000000000000000000000000..35c58a73cbc6f062c815a2c0faea2f4334a2de24
Binary files /dev/null and b/Tafeln/DAV_R.xls differ
diff --git a/Tafeln/DAV_T.xls b/Tafeln/DAV_T.xls
new file mode 100644
index 0000000000000000000000000000000000000000..84d3e953b9c89632f1301ee2998609780ede3e2d
Binary files /dev/null and b/Tafeln/DAV_T.xls differ
diff --git a/Tafeln/Overview_Tables.ods b/Tafeln/Overview_Tables.ods
new file mode 100644
index 0000000000000000000000000000000000000000..1a52a0cf19a36a1c5e93546f76698fdae7c2f256
Binary files /dev/null and b/Tafeln/Overview_Tables.ods differ
diff --git a/Tafeln/USA_Annuities.xls b/Tafeln/USA_Annuities.xls
new file mode 100644
index 0000000000000000000000000000000000000000..e0456b95c48c69794249ada1cd7ec299be4bf55d
Binary files /dev/null and b/Tafeln/USA_Annuities.xls differ
diff --git a/ValuationTables.Rproj b/ValuationTables.Rproj
new file mode 100644
index 0000000000000000000000000000000000000000..96bdc3da74e6898e53b6b1412e5c6660588c7a69
--- /dev/null
+++ b/ValuationTables.Rproj
@@ -0,0 +1,16 @@
+Version: 1.0
+
+RestoreWorkspace: Default
+SaveWorkspace: Default
+AlwaysSaveHistory: Default
+
+EnableCodeIndexing: Yes
+UseSpacesForTab: Yes
+NumSpacesForTab: 2
+Encoding: UTF-8
+
+RnwWeave: Sweave
+LaTeX: pdfLaTeX
+
+BuildType: Package
+PackageInstallArgs: --no-multiarch
diff --git a/man/ValuationTables-package.Rd b/man/ValuationTables-package.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..d41e96bc2b2266b0f990218e5443cca423de709c
--- /dev/null
+++ b/man/ValuationTables-package.Rd
@@ -0,0 +1,40 @@
+\name{ValuationTables-package}
+\alias{ValuationTables-package}
+\alias{ValuationTables}
+\docType{package}
+\title{
+What the package does (short line)
+~~ package title ~~
+}
+\description{
+More about what it does (maybe more than one line)
+~~ A concise (1-5 lines) description of the package ~~
+}
+\details{
+\tabular{ll}{
+Package: \tab ValuationTables\cr
+Type: \tab Package\cr
+Version: \tab 1.0\cr
+Date: \tab 2013-05-03\cr
+License: \tab What license is it under?\cr
+}
+~~ An overview of how to use the package, including the most important functions ~~
+}
+\author{
+Who wrote it
+
+Maintainer: Who to complain to <yourfault@somewhere.net>
+~~ The author and/or maintainer of the package ~~
+}
+\references{
+~~ Literature or other references for background information ~~
+}
+~~ Optionally other standard keywords, one per line, from file KEYWORDS in the R documentation directory ~~
+\keyword{ package }
+\seealso{
+~~ Optional links to other man pages, e.g. ~~
+~~ \code{\link[<pkg>:<pkg>-package]{<pkg>}} ~~
+}
+\examples{
+~~ simple examples of the most important functions ~~
+}