diff --git a/TODO/PensionTables_Austria_AVOe1999P.R b/inst/extdata/PensionTables_Austria_AVOe1999P.R
similarity index 74%
rename from TODO/PensionTables_Austria_AVOe1999P.R
rename to inst/extdata/PensionTables_Austria_AVOe1999P.R
index a027006b68888c6dfc7628a7e8bac3b696dc85b6..6ad9c025b6564e970e6d2afef8d61aa425d92748 100644
--- a/TODO/PensionTables_Austria_AVOe1999P.R
+++ b/inst/extdata/PensionTables_Austria_AVOe1999P.R
@@ -1,15 +1,25 @@
 #' @import MortalityTables
 NULL
 
-stopifnot(require(methods), require(utils), require(MortalityTables)) # MortalityTable classes; new; Excel reader
+stopifnot(require(methods), require(utils), require(MortalityTables), require(readxl)) # MortalityTable classes; new; Excel reader
+
+# TODO:
+#  *) Arbeitsmarkteffekt
+
+############################################################################### #
+# Pension Table AVÖ 2018-P                                                   ----
+############################################################################### #
+
+if (is.null(getOption("MortalityTables.AVOe1999P"))) {
+    message("The pension table AVÖ 1999P requires the Excel file 'Austria_Pensions_AVOe1999P.xlsx'. Please set its path with options(\"MortalityTables.AVOe1999P\" = \"/path/to/Austria_Pensions_AVOe1999P.xlsx\").")
+} else {
+
 
 
 ###############################################################################
 # AVÖ 1999P exact (Male, Female)
 ###############################################################################
-
-
-AVOe1999P.generate = function(file, name="P", collar = "Angestellte") {
+AVOe1999P.generate = function(tab, name="P", collar = "Angestellte") {
     table99 = function(name, data, agevar = "x", probvar, trendvar = NULL, dim = list(), ..., baseyear = 1982) {
         if (is.null(trendvar)) {
             mortalityTable.period(
@@ -26,18 +36,16 @@ AVOe1999P.generate = function(file, name="P", collar = "Angestellte") {
         paste("AVÖ 1999-", name, ", ", desc, sep = "")
     }
 
-    data = utils::read.csv(
-        system.file("extdata", file, package = "MortalityTablesPrivate"),
+    data = read_excel(
+        getOption("MortalityTables.AVOe1999P"), sheet = tab,
         skip = 4,
-        header = FALSE,
-        col.names = c(
-            "x",
-            "qaax", "qix", "qpx", "qgx", "qwy", "ix", "hx", "yx",
-            "SPACER",
-            "qaay", "qiy", "qpy", "qgy", "qwx", "iy", "hy", "xy",
-            "SPACER", "lambdax", "lambday")
-    );
-
+        col_names = c(
+        "x",
+        "qaax", "qix", "qpx", "qgx", "qwy", "ix", "hx", "yx",
+        "SPACER1",
+        "qaay", "qiy", "qpy", "qgy", "qwx", "iy", "hy", "xy",
+        "SPACER2", "lambdax", "lambday")
+    )
 
     male = pensionTable(
         name = name99p(name, "Männer"),
@@ -50,8 +58,8 @@ AVOe1999P.generate = function(file, name="P", collar = "Angestellte") {
                       dim = list(sex = "m", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")),
         qix = table99(name99p(name, "qix, disabled males"), data, "x", "qix", "lambdax",
                       dim = list(sex = "m", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")),
-        rx =  mortalityTable.zeroes(name = "No reactivation", ages = data[["x"]]),
-        apx = mortalityTable.once(transitionAge = 65 - 1, name = "Pensionsalter 65", ages = data[["x"]]),
+        rx =  mortalityTable.zeroes(name = "No reactivation", ages = data$x),
+        apx = mortalityTable.once(transitionAge = 65 - 1, name = "Pensionsalter 65", ages = data$x),
         qpx = table99(name99p(name, "qpx, retired males"), data, "x", "qpx", "lambdax",
                       dim = list(sex = "m", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")),
         hx =  table99(name99p(name, "hx, marriage probability"), data, "x", "hx",
@@ -79,8 +87,8 @@ AVOe1999P.generate = function(file, name="P", collar = "Angestellte") {
                       dim = list(sex = "w", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")),
         qix = table99(name99p(name, "qiy, disabled females"), data, "x", "qix", "lambday",
                       dim = list(sex = "w", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")),
-        rx =  mortalityTable.zeroes(name = "No reactivation", ages = data[["x"]]),
-        apx = mortalityTable.once(transitionAge = 60 - 1, name = "Pensionsalter 60", ages = data[["x"]]),
+        rx =  mortalityTable.zeroes(name = "No reactivation", ages = data$x),
+        apx = mortalityTable.once(transitionAge = 60 - 1, name = "Pensionsalter 60", ages = data$x),
         qpx = table99(name99p(name, "qpy, retired females"), data, "x", "qpx", "lambday",
                       dim = list(sex = "w", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")),
         hx =  table99(name99p(name, "hy, marriage probability"), data, "x", "hy",
@@ -100,44 +108,33 @@ AVOe1999P.generate = function(file, name="P", collar = "Angestellte") {
     list(male = male, female = female)
 }
 
-AVOe1999P.tmp = AVOe1999P.generate("Austria_Pensions_AVOe1999P_Angestellte.csv", "P", collar = "Angestellte")
-AVOe1999P.male = AVOe1999P.tmp$male
-AVOe1999P.female = AVOe1999P.tmp$female
-
-AVOe1999P.tmp = AVOe1999P.generate("Austria_Pensions_AVOe1999P_ArbeiterAngestellte.csv", "P Arb./Ang.", collar = "Mischbestand")
-AVOe1999P.male.ArbAng = AVOe1999P.tmp$male
-AVOe1999P.female.ArbAng = AVOe1999P.tmp$female
-
-AVOe1999P.tmp = AVOe1999P.generate("Austria_Pensions_AVOe1999P_Angestellte.csv", "PK", collar = "Angestellte")
-AVOe1999P.male.PK = AVOe1999P.tmp$male
-AVOe1999P.female.PK = AVOe1999P.tmp$female
-
-AVOe1999P.tmp = AVOe1999P.generate("Austria_Pensions_AVOe1999P_ArbeiterAngestellte.csv", "PK Arb./Ang.", collar = "Mischbestand")
-AVOe1999P.male.ArbAng.PK = AVOe1999P.tmp$male
-AVOe1999P.female.ArbAng.PK = AVOe1999P.tmp$female
-
-
 ############################################################################## #
 # Die Tafel als Array ----
 ############################################################################## #
 
 AVOe1999P = array(
     data = c(mortalityTable.NA),
-    dim = c(2, 2, 1, 2),
-    dimnames = list(Geschlecht = c("m", "w"), Bestand = c("Angestellte", "Mischbestand"), Invalidisierung = c("IP"), Typ = c("P", "PK"))
+    dim = c(2, 2),
+    dimnames = list(Geschlecht = c("m", "w"), Bestand = c("Angestellte", "Mischbestand"))
+)
+AVOe1999PK = array(
+    data = c(mortalityTable.NA),
+    dim = c(2, 2),
+    dimnames = list(Geschlecht = c("m", "w"), Bestand = c("Angestellte", "Mischbestand"))
 )
+AVOe1999P[, "Angestellte"] = AVOe1999P.generate(tab = "Angestellte", "P", collar = "Angestellte")
+AVOe1999P[, "Mischbestand"] = AVOe1999P.generate(tab = "Arbeiter+Angestellte", "P Arb./Ang.", collar = "Mischbestand")
+AVOe1999PK[, "Angestellte"] = AVOe1999P.generate(tab = "Angestellte PK", "PK", collar = "Angestellte")
+AVOe1999PK[, "Mischbestand"] = AVOe1999P.generate(tab = "Arbeiter+Angestellte PK", "P< Arb./Ang.", collar = "Mischbestand")
 
-AVOe1999P[["m", "Angestellte", "IP", "P"]] = AVOe1999P.male
-AVOe1999P[["w", "Angestellte", "IP", "P"]] = AVOe1999P.female
-AVOe1999P[["m", "Mischbestand", "IP", "P"]] = AVOe1999P.male.ArbAng
-AVOe1999P[["w", "Mischbestand", "IP", "P"]] = AVOe1999P.female.ArbAng
 
-AVOe1999P[["m", "Angestellte", "IP", "PK"]] = AVOe1999P.male.PK
-AVOe1999P[["w", "Angestellte", "IP", "PK"]] = AVOe1999P.female.PK
-AVOe1999P[["m", "Mischbestand", "IP", "PK"]] = AVOe1999P.male.ArbAng.PK
-AVOe1999P[["w", "Mischbestand", "IP", "PK"]] = AVOe1999P.female.ArbAng.PK
 
 
+AVOe1999P.male = AVOe1999P[["m", "Angestellte"]]
+AVOe1999P.female = AVOe1999P[["w", "Angestellte"]]
+AVOe1999P.male.Misch = AVOe1999P[["m", "Mischbestand"]]
+AVOe1999P.female.Misch = AVOe1999P[["w", "Mischbestand"]]
 
+rm(AVOe1999P.generate)
 
-rm(AVOe1999P.generate, AVOe1999P.tmp)
+}
diff --git a/vignettes/international-mortality-tables-overview.Rmd b/vignettes/international-mortality-tables-overview.Rmd
index dbaf365642005e09bc017887ccb7636082a5aa51..8e60822fb72d498be68233ca08093fc3bbc29781 100644
--- a/vignettes/international-mortality-tables-overview.Rmd
+++ b/vignettes/international-mortality-tables-overview.Rmd
@@ -399,6 +399,7 @@ Verlag: Verband der wissenschaftlichen Gesellschaften Österreichs, Wien, 1989
 ```{r AVOe1999P, results="hide"}
 pensionTables.load("Austria_AVOe1999P")
 AVOe1999P
+AVOe1999PK
 ```
 
 
@@ -435,7 +436,7 @@ AVOe2018P
 ```{r AT.pensionTables.Comparison}
 plotMortalityTables(
   EttlPagler.male %>% pT.getSubTable("qx"),
-  AVOe1999P["m",,"IP", "P"] %>% pT.getSubTable("qx"),
+  AVOe1999P["m",] %>% pT.getSubTable("qx"),
   AVOe2008P["m",,"IP", "P"] %>% pT.getSubTable("qx"),
   AVOe2018P["m",,"IPRG"] %>% pT.getSubTable("qx"),
   legend.position = c(0.01, 0.99), legend.justification = c(0,1),
@@ -444,7 +445,7 @@ plotMortalityTables(
 
 plotMortalityTables(
   EttlPagler.male %>% pT.getSubTable("hx"),
-  AVOe1999P["m",,"IP", "P"] %>% pT.getSubTable("hx"),
+  AVOe1999P["m",] %>% pT.getSubTable("hx"),
   AVOe2008P["m",,"IP", "P"] %>% pT.getSubTable("hx"),
   AVOe2018P["m",,"IPRG"] %>% pT.getSubTable("hx"),
   # legend.position = c(0.01, 0.99), legend.justification = c(0,1),