diff --git a/examples/vertical_EAS.cpp b/examples/vertical_EAS.cpp
index 641fb95f85ce3e61e1779b21037ffc0ae6b3003c..14edc194a1df38c41bc5f0462f3dcbd32ff63d5f 100644
--- a/examples/vertical_EAS.cpp
+++ b/examples/vertical_EAS.cpp
@@ -153,11 +153,20 @@ int main(int argc, char** argv) {
   // setup particle stack, and add primary particle
   setup::Stack stack;
   stack.clear();
-  const Code beamCode = Code::Nucleus;
   unsigned short const A = std::stoi(std::string(argv[1]));
-  unsigned short Z = std::stoi(std::string(argv[2]));
-  auto const mass = get_nucleus_mass(A, Z);
-  const HEPEnergyType E0 = 1_GeV * std::stof(std::string(argv[3]));
+  Code beamCode;
+  HEPEnergyType mass;
+  unsigned short Z = 0;
+  if (A>0) {
+    beamCode = Code::Nucleus;
+    Z = std::stoi(std::string(argv[2]));
+    mass = get_nucleus_mass(A, Z);
+  } else {
+    unsigned int pdg = std::stoi(std::string(argv[2]));
+    beamCode = convert_from_PDG(PDGCode(pdg));
+    mass = get_mass(beamCode);
+  }
+  HEPEnergyType const E0 = 1_GeV * std::stof(std::string(argv[3]));
   double theta = 0.;
   auto const thetaRad = theta / 180. * M_PI;
 
@@ -187,17 +196,21 @@ int main(int argc, char** argv) {
 
   std::cout << "point of injection: " << injectionPos.getCoordinates() << std::endl;
 
-  if (A != 1) {
+  if (A > 1) {
     stack.addParticle(std::make_tuple(beamCode, E0, plab, injectionPos, 0_ns, A, Z));
 
   } else {
-    if (Z == 1) {
-      stack.addParticle(std::make_tuple(Code::Proton, E0, plab, injectionPos, 0_ns));
-    } else if (Z == 0) {
-      stack.addParticle(std::make_tuple(Code::Neutron, E0, plab, injectionPos, 0_ns));
+    if (A==1) {
+      if (Z == 1) {
+	stack.addParticle(std::make_tuple(Code::Proton, E0, plab, injectionPos, 0_ns));
+      } else if (Z == 0) {
+	stack.addParticle(std::make_tuple(Code::Neutron, E0, plab, injectionPos, 0_ns));
+      } else {
+	std::cerr << "illegal parameters" << std::endl;
+	return EXIT_FAILURE;
+      }
     } else {
-      std::cerr << "illegal parameters" << std::endl;
-      return EXIT_FAILURE;
+      stack.addParticle(std::make_tuple(beamCode, E0, plab, injectionPos, 0_ns));
     }
   }
 
@@ -210,8 +223,7 @@ int main(int argc, char** argv) {
 
   // setup processes, decays and interactions
 
-  corsika::qgsjetII::Interaction qgsjet;
-
+  // corsika::qgsjetII::Interaction qgsjet;
   corsika::sibyll::Interaction sibyll;
   InteractionCounter sibyllCounted(sibyll);