diff --git a/data-raw/US/PensionPlans/Pub-2010/pub-2010-amount-mort-rates.xlsx b/data-raw/US/PensionPlans/Pub-2010/pub-2010-amount-mort-rates.xlsx
new file mode 100644
index 0000000000000000000000000000000000000000..52e380d8bb3d5252ae07c2a0c351aa99e3b03244
Binary files /dev/null and b/data-raw/US/PensionPlans/Pub-2010/pub-2010-amount-mort-rates.xlsx differ
diff --git a/data-raw/US/PensionPlans/Pub-2010/pub-2010-headcount-mort-rates.xlsx b/data-raw/US/PensionPlans/Pub-2010/pub-2010-headcount-mort-rates.xlsx
new file mode 100644
index 0000000000000000000000000000000000000000..8676fc6e3b55529fca316203f33c9c68bfd3e35e
Binary files /dev/null and b/data-raw/US/PensionPlans/Pub-2010/pub-2010-headcount-mort-rates.xlsx differ
diff --git a/data-raw/US/PensionPlans/USA_PensionPlans.xlsx b/data-raw/US/PensionPlans/USA_PensionPlans.xlsx
index df12484efa248dd30d889e2a4d3a4769db8ad317..5d53927f65855ba68e29be5f5aa0a137be0e4cb8 100644
Binary files a/data-raw/US/PensionPlans/USA_PensionPlans.xlsx and b/data-raw/US/PensionPlans/USA_PensionPlans.xlsx differ
diff --git a/data-raw/US/create_MortalityTables_US_Pensions.R b/data-raw/US/create_MortalityTables_US_Pensions.R
index c579420b8e3808bb28d64e04e4f44500d6cbced8..9b9cd1dca9c1fad8d085fdaef62a30fb87bce277 100644
--- a/data-raw/US/create_MortalityTables_US_Pensions.R
+++ b/data-raw/US/create_MortalityTables_US_Pensions.R
@@ -74,3 +74,207 @@ save(USA.UP94,
 )
 
 
+
+
+##############################################################################h#
+### USA RP-2000 - US 2000 Retirement Plan Mortality Tables                  ####
+##############################################################################h#
+
+USA.RP2000.data = read_excel(
+  US.pensions.file, sheet = "RP-2000",
+  col_names = c("age", "skip2",
+                "qxa", "qxp", "qx", "qxi", "BCx", "WCx", "qxpSmall", "qxpMedium", "qxpLarge", "AAx", "skip3",
+                "qya", "qyp", "qy", "qyi", "BCy", "WCy", "qypSmall", "qypMedium", "qypLarge", "AAy"),
+  skip = 5)
+
+makeRP2000table = function(data, field, sex, population) {
+  s = recode(sex, "m" = "Male", "f" = "Female")
+  AA = paste0("AA", recode(sex, "m" = "x", "f" = "y"))
+  d = filter(select(data, "age", qx = !!field, AA = !!AA), !is.na(qx))
+  mortalityTable.improvementFactors(
+    name = paste0("USA RP-2000, ", population, ", ", s),
+    ages = d$age,
+    deathProbs = d$qx,
+    improvement = d$AA,
+    baseYear = 2000,
+    data = list(
+      dim = list(table = paste0("RP-2000, ", population), sex = sex, collar = population, type = "PensionTable", data = "unloaded", year = 2000, country = "USA")
+    )
+  )
+}
+
+USA.RP2000 = array(
+  data = c(
+    pensionTable(
+      name = "RP-2000, Male",
+      qx  = makeRP2000table(data, field = "qxa", sex = "m", population = "Employee"),
+      qix = makeRP2000table(data, field = "qxi", sex = "m", population = "Disabled Retiree"),
+      qpx = makeRP2000table(data, field = "qxp", sex = "m", population = "Healthy Annuitant"),
+      qgx = makeRP2000table(data, field = "qx" , sex = "m", population = "Combined Healthy"),
+      invalids.retire = FALSE,
+      baseYear = 2000,
+      data = list(
+        dim = list(table = "RP-2000", sex = "m", type = "PensionTable", data = "unloaded", year = 2000, country = "USA")
+      )
+    ),
+    pensionTable(
+      name = "RP-2000, Female",
+      qx  = makeRP2000table(data, field = "qya", sex = "f", population = "Employee"),
+      qix = makeRP2000table(data, field = "qyi", sex = "f", population = "Disabled Retiree"),
+      qpx = makeRP2000table(data, field = "qyp", sex = "f", population = "Healthy Annuitant"),
+      qgx = makeRP2000table(data, field = "qy" , sex = "f", population = "Combined Healthy"),
+      invalids.retire = FALSE,
+      baseYear = 2000,
+      data = list(
+        dim = list(table = "RP-2000", sex = "f", type = "PensionTable", data = "unloaded", year = 2000, country = "USA")
+      )
+    )
+
+  ),
+  dim = c(2),
+  dimnames = list(
+    sex = c("m", "f")
+  )
+)
+
+USA.RP2000.Collar = array(
+  data = c(
+    makeRP2000table(data, field = "BCx", sex = "m", population = "Blue Collar Combined Healthy"),
+    makeRP2000table(data, field = "BCy", sex = "f", population = "Blue Collar Combined Healthy"),
+    makeRP2000table(data, field = "WCx", sex = "m", population = "White Collar Combined Healthy"),
+    makeRP2000table(data, field = "WCy", sex = "f", population = "White Collar Combined Healthy")
+  ),
+  dim = c(2, 2),
+  dimnames = list(
+    sex = c("m", "f"),
+    population = c("Blue Collar Combined Healthy", "White Collar Combined Healthy")
+  )
+)
+USA.RP2000.Amount = array(
+  data = c(
+    makeRP2000table(data, field = "qxpSmall", sex = "m", population = "Healthy Annuitant Small"),
+    makeRP2000table(data, field = "qypSmall", sex = "f", population = "Healthy Annuitant Small"),
+    makeRP2000table(data, field = "qxpMedium", sex = "m", population = "Healthy Annuitant Medium"),
+    makeRP2000table(data, field = "qypMedium", sex = "f", population = "Healthy Annuitant Medium"),
+    makeRP2000table(data, field = "qxpLarge", sex = "m", population = "Healthy Annuitant Large"),
+    makeRP2000table(data, field = "qypLarge", sex = "f", population = "Healthy Annuitant Large")
+  ),
+  dim = c(2, 3),
+  dimnames = list(
+    sex = c("m", "f"),
+    population = c("Healthy Annuitant Small", "Healthy Annuitant Medium", "Healthy Annuitant Large")
+  )
+)
+
+save(USA.RP2000, file = here::here("data", "USA.RP2000.RData"))
+save(USA.RP2000.Collar, file = here::here("data", "USA.RP2000.Collar.RData"))
+save(USA.RP2000.Amount, file = here::here("data", "USA.RP2000.Amount.RData"))
+
+
+
+
+##############################################################################h#
+### USA Pub-2010 - Public Retirement Plans Mortality Tables                 ####
+##############################################################################h#
+
+USA.Pub2010.file = here("data-raw", "US", "PensionPlans", "Pub-2010", "pub-2010-amount-mort-rates.xlsx")
+USA.PubH2010.file = here("data-raw", "US", "PensionPlans", "Pub-2010", "pub-2010-headcount-mort-rates.xlsx")
+USA.Pub2010.header = c("age", "__1", "qy", "qyp", "qyi", "qyw", "__2", "qx", "qxp", "qxi", "qxw", "__3", "__4")
+USA.Pub2010.headerSh = c("age", "__1", "qy", "qyp", "qyw", "__2", "qx", "qxp", "qxw", "__3", "__4")
+
+USA.Pub2010 = array(
+  data = c(pensionTable.NA),
+  dim = c(2, 3, 2, 3),
+  dimnames = list(
+    sex = c("m", "f"),
+    Population = c("General", "Teachers", "Safety"),
+    Weights = c("Amount", "Headcount"),
+    Salary = c("Overall", "AboveMedian", "BelowMedian")
+  )
+)
+
+makePub2010table = function(data, field, sex, subtable, salary, table, population, weights) {
+  # IF field does not exist return NA:
+  if (field %in% colnames(data)) {
+    s = recode(sex, "m" = "Male", "f" = "Female")
+    d = filter(select(data, "age", qx = !!field), !is.na(qx))
+    mortalityTable.period(
+      name = paste0("USA Pub-2000, ", population, ", " , subtable, ", ", s),
+      ages = d$age,
+      deathProbs = d$qx,
+      baseYear = 2010,
+      data = list(
+        dim = list(table = paste0(table, ", ", subtable), sex = sex, collar = paste(subtable, salary), salary = salary, subtable = subtable, population = population, weights = weights, type = "PensionTable", data = "unloaded", year = 2010, country = "USA")
+      )
+    )
+  } else {
+    mortalityTable.NA
+  }
+}
+
+
+dmn = dimnames(USA.Pub2010)
+for (w in dmn$Weights) {
+  fn = recode(w, "Amount" = USA.Pub2010.file,  "Headcount" = USA.PubH2010.file)
+  suffix = recode(w, "Amount" = "", "Headcount" = ".H")
+  juv = read_excel(fn, sheet = "Juvenile", skip = 4, col_names = c("age", "__", "qy", "qx"))
+  for (population in dmn$Population) {
+    for (Salary in dmn$Salary) {
+      tablename = paste0("Pub", substr(population, 1, 1), suffix, "-2010")
+      tab = paste0(tablename, recode(Salary, "Overall" = "", "AboveMedian" = "(A)", "BelowMedian" = "(B)"))
+      col_names = if(Salary == "Overall") USA.Pub2010.header else USA.Pub2010.headerSh
+      data = bind_rows(
+        juv,
+        read_excel(fn, sheet = tab, col_names = col_names, skip = 5)
+      )
+
+      USA.Pub2010[["m", population, w, Salary]] = pensionTable(
+        name = paste0("USA ", tablename, recode(Salary, "Overall" = "", "AboveMedian" = " Above-Median", "BelowMedian" = " Below-Median"), ", Male"),
+        qx  = makePub2010table(data, field = "qx", sex = "m", subtable = "Employee", table = tab, salary = Salary, population = population, weights = w),
+        qpx = makePub2010table(data, field = "qxp", sex = "m", subtable = "Healthy Retiree", table = tab, salary = Salary, population = population, weights = w),
+        qix = makePub2010table(data, field = "qxi", sex = "m", subtable = "Disabled Retiree", table = tab, salary = Salary, population = population, weights = w),
+        qwy = makePub2010table(data, field = "qxw" , sex = "m", subtable = "Contingent Survivor", table = tab, salary = Salary, population = population, weights = w),
+        invalids.retire = FALSE,
+        baseYear = 2010,
+        data = list(
+          dim = list(table = tab, sex = "m", type = "PensionTable", collar = "Salary", data = "unloaded", year = 2010, country = "USA")
+        )
+      )
+
+      USA.Pub2010[["f", population, w, Salary]] = pensionTable(
+        name = paste0("USA ", tablename, recode(Salary, "Overall" = "", "AboveMedian" = " Above-Median", "BelowMedian" = " Below-Median"), ", Female"),
+        qx  = makePub2010table(data, field = "qy", sex = "f", subtable = "Employee", table = tab, salary = Salary, population = population, weights = w),
+        qpx = makePub2010table(data, field = "qyp", sex = "f", subtable = "Healthy Retiree", table = tab, salary = Salary, population = population, weights = w),
+        qix = makePub2010table(data, field = "qyi", sex = "f", subtable = "Disabled Retiree", table = tab, salary = Salary, population = population, weights = w),
+        qwy = makePub2010table(data, field = "qyw" , sex = "f", subtable = "Contingent Survivor", table = tab, salary = Salary, population = population, weights = w),
+        invalids.retire = FALSE,
+        baseYear = 2010,
+        data = list(
+          dim = list(table = tab, sex = "f", type = "PensionTable", collar = "Salary", data = "unloaded", year = 2010, country = "USA")
+        )
+      )
+
+    }
+  }
+}
+
+USA.PubG2010 = USA.Pub2010[, "General", "Amount", "Overall"]
+USA.PubS2010 = USA.Pub2010[, "Safety", "Amount", "Overall"]
+USA.PubT2010 = USA.Pub2010[, "Teachers", "Amount", "Overall"]
+
+USA.PubG.H2010 = USA.Pub2010[, "General", "Headcount", "Overall"]
+USA.PubS.H2010 = USA.Pub2010[, "Safety", "Headcount", "Overall"]
+USA.PubT.H2010 = USA.Pub2010[, "Teachers", "Headcount", "Overall"]
+
+save(USA.Pub2010,
+     USA.PubG2010, USA.PubS2010, USA.PubT2010,
+     USA.PubG.H2010, USA.PubS.H2010, USA.PubT.H2010,
+     file = here::here("data", "USA.Pub2010.RData")
+)
+
+
+
+
+
+
+
diff --git a/data/USA.Pub2010.RData b/data/USA.Pub2010.RData
new file mode 100644
index 0000000000000000000000000000000000000000..f834a67f05de3fc51f714aa3e812a72df09a83b6
Binary files /dev/null and b/data/USA.Pub2010.RData differ