diff --git a/Processes/Proposal/ContinuousProcess.h b/Processes/Proposal/ContinuousProcess.h
index e123ee938f5a0c6a5e20b10489687fa419bccc93..58b19ec2910a61d84ef7965a6cdbe50a4d6ea58f 100644
--- a/Processes/Proposal/ContinuousProcess.h
+++ b/Processes/Proposal/ContinuousProcess.h
@@ -73,6 +73,31 @@ namespace corsika::process::proposal {
             calc.insert({std::make_pair(&comp, corsika_code), PROPOSAL::make_displacement(cross, true)});
             return insert_it;
         }
+        if (corsika_code == particles::Code::MuMinus) {
+            auto cross = GetStdCrossSections(PROPOSAL::MuMinusDef(), media.at(&comp), cut, true);
+            auto [insert_it, success] =
+            calc.insert({std::make_pair(&comp, corsika_code), PROPOSAL::make_displacement(cross, true)});
+            return insert_it;
+        }
+        if (corsika_code == particles::Code::MuPlus) {
+            auto cross = GetStdCrossSections(PROPOSAL::MuPlusDef(), media.at(&comp), cut, true);
+            auto [insert_it, success] =
+            calc.insert({std::make_pair(&comp, corsika_code), PROPOSAL::make_displacement(cross, true)});
+            return insert_it;
+        }
+        if (corsika_code == particles::Code::TauMinus) {
+            auto cross = GetStdCrossSections(PROPOSAL::TauMinusDef(), media.at(&comp), cut, true);
+            auto [insert_it, success] =
+            calc.insert({std::make_pair(&comp, corsika_code), PROPOSAL::make_displacement(cross, true)});
+            return insert_it;
+        }
+        if (corsika_code == particles::Code::TauPlus) {
+            auto cross = GetStdCrossSections(PROPOSAL::TauPlusDef(), media.at(&comp), cut, true);
+            auto [insert_it, success] =
+            calc.insert({std::make_pair(&comp, corsika_code), PROPOSAL::make_displacement(cross, true)});
+            return insert_it;
+        }
+        throw std::runtime_error("PROPOSAL could not find corresponding builder");
     }
     
     template <typename Particle>
diff --git a/Processes/Proposal/Interaction.h b/Processes/Proposal/Interaction.h
index 48f3fbeb1b6a4524c9820d9c7fd90b1c362f5755..b95b6afdbe18133bf49f66c88adf69378d3d5fba 100644
--- a/Processes/Proposal/Interaction.h
+++ b/Processes/Proposal/Interaction.h
@@ -92,6 +92,55 @@ namespace corsika::process::proposal {
                                PROPOSAL::make_displacement(cross, true))});
         return insert_it;
       }
+      if (corsika_code == particles::Code::MuMinus) {
+          std::cout << "Build MuMinus tables" << std::endl;
+        auto cross =
+            GetStdCrossSections(PROPOSAL::MuMinusDef(), media.at(&comp), cut, true);
+        auto inter_types = PROPOSAL::CrossSectionVector::GetInteractionTypes(cross);
+        auto [insert_it, success] = calculators.insert(
+            {std::make_pair(&comp, corsika_code), make_tuple(PROPOSAL::make_secondaries(
+                                   inter_types, PROPOSAL::MuMinusDef(), media.at(&comp)),
+                               PROPOSAL::make_interaction(cross, true),
+                               PROPOSAL::make_displacement(cross, true))});
+        return insert_it;
+      }
+      if (corsika_code == particles::Code::MuPlus) {
+          std::cout << "Build MuPlus tables" << std::endl;
+        auto cross =
+            GetStdCrossSections(PROPOSAL::MuPlusDef(), media.at(&comp), cut, true);
+        auto inter_types = PROPOSAL::CrossSectionVector::GetInteractionTypes(cross);
+        auto [insert_it, success] = calculators.insert(
+            {std::make_pair(&comp, corsika_code), make_tuple(PROPOSAL::make_secondaries(
+                                   inter_types, PROPOSAL::MuPlusDef(), media.at(&comp)),
+                               PROPOSAL::make_interaction(cross, true),
+                               PROPOSAL::make_displacement(cross, true))});
+        return insert_it;
+      }
+      if (corsika_code == particles::Code::TauMinus) {
+          std::cout << "Build TauMinus tables" << std::endl;
+        auto cross =
+            GetStdCrossSections(PROPOSAL::TauMinusDef(), media.at(&comp), cut, true);
+        auto inter_types = PROPOSAL::CrossSectionVector::GetInteractionTypes(cross);
+        auto [insert_it, success] = calculators.insert(
+            {std::make_pair(&comp, corsika_code), make_tuple(PROPOSAL::make_secondaries(
+                                   inter_types, PROPOSAL::TauMinusDef(), media.at(&comp)),
+                               PROPOSAL::make_interaction(cross, true),
+                               PROPOSAL::make_displacement(cross, true))});
+        return insert_it;
+      }
+      if (corsika_code == particles::Code::TauPlus) {
+          std::cout << "Build TauPlus tables" << std::endl;
+        auto cross =
+            GetStdCrossSections(PROPOSAL::TauPlusDef(), media.at(&comp), cut, true);
+        auto inter_types = PROPOSAL::CrossSectionVector::GetInteractionTypes(cross);
+        auto [insert_it, success] = calculators.insert(
+            {std::make_pair(&comp, corsika_code), make_tuple(PROPOSAL::make_secondaries(
+                                   inter_types, PROPOSAL::TauPlusDef(), media.at(&comp)),
+                               PROPOSAL::make_interaction(cross, true),
+                               PROPOSAL::make_displacement(cross, true))});
+        return insert_it;
+      }
+      throw std::runtime_error("PROPOSAL could not find corresponding builder");
     } // namespace corsika::process::proposal
 
     enum { SECONDARIES, INTERACTION, DISPLACEMENT };