diff --git a/Documentation/Examples/cascade_example.cc b/Documentation/Examples/cascade_example.cc
index 50a8f351c74a50a35e160d1726594be5b73ebedb..9dfa98b3978a1c3d8e165b4f04251929a4decd71 100644
--- a/Documentation/Examples/cascade_example.cc
+++ b/Documentation/Examples/cascade_example.cc
@@ -44,8 +44,8 @@ public:
   double MinStepLength(Particle& p) const {
     // beam particles for sibyll : 1, 2, 3 for p, pi, k
     corsika::particles::Code c_id = p.GetPID();
-    corsika::process::sibyll::Code s_id = process::sibyll::ConvertToSibyll( p.GetPID() );
-    corsika::particles::Code p_id_2 = process::sibyll::ConvertFromSibyll( corsika::process::sibyll::Code::Proton );
+    corsika::process::sibyll::SibyllCode s_id = process::sibyll::ConvertToSibyll( p.GetPID() );
+    corsika::particles::Code p_id_2 = process::sibyll::ConvertFromSibyll( corsika::process::sibyll::SibyllCode::Proton );
     cout << p_id_2 << endl;
     std::cout << "MinStepLength: particle input " << "corsika id: " << c_id << std::endl;
     auto test = static_cast<corsika::process::sibyll::SibyllCodeIntType>(s_id);
@@ -157,8 +157,7 @@ public:
 	const double en_lab = gambet * s_plist_.p[2][i] + gamma * p.GetEnergy();	
 	// add to corsika stack
 	s.NewParticle().SetEnergy( en_lab * 1_GeV );
-      }
-     
+      }     
     }
   }
   
diff --git a/Processes/Sibyll/code_generator.py b/Processes/Sibyll/code_generator.py
index 784b8e7d87b0f51697674a02f2561aa95ac1ed52..a2929fdaa1fca5e544f153a197af02fbdc4e1649 100755
--- a/Processes/Sibyll/code_generator.py
+++ b/Processes/Sibyll/code_generator.py
@@ -28,10 +28,11 @@ def read_sibyll_codes(filename, pythia_db):
             line = line.strip()
             if line[0] == '#':
                 continue            
-            identifier, sib_code, canInteractFlag = line.split()
+            identifier, sib_code, canInteractFlag, xsType = line.split()
             try:
                 pythia_db[identifier]["sibyll_code"] = int(sib_code)
                 pythia_db[identifier]["sibyll_canInteract"] = int(canInteractFlag)
+                pythia_db[identifier]["xsType"] = int(xsType)
             except KeyError as e:
                 raise Exception("Identifier '{:s}' not found in pythia_db".format(identifier))
 
@@ -126,7 +127,7 @@ def generate_interacting_particle(pythia_db):
         low = numeric & 0xFFFFFFFF
         numeric = numeric >> 32
         string += "  0x{:0x},\n".format(low)
-        
+    
     string += "}}};\n"
     return string
     
@@ -148,3 +149,4 @@ if __name__ == "__main__":
         print(generate_corsika2sibyll(pythia_db), file=f)
         print(generate_known_particle(pythia_db), file=f)
         print(generate_sibyll2corsika(pythia_db), file=f)
+        print(generate_interacting_particle(pythia_db), file=f)
diff --git a/Processes/Sibyll/sibyll_codes.dat b/Processes/Sibyll/sibyll_codes.dat
index 9b64792167c2893355190a31c09be6545bfb8d5c..19e35384e6df654c00a40bc625a432281c2095ba 100644
--- a/Processes/Sibyll/sibyll_codes.dat
+++ b/Processes/Sibyll/sibyll_codes.dat
@@ -1,3 +1,5 @@
+# input file for particle conversion to/from SIBYLL
+# the format of this file is: "corsika-identifier" "sibyll-id" "can-interact-in-sibyll" "cross-section-type"
 Electron 3 0 0
 Positron 2 0 0
 NuE 15 0 0
diff --git a/Processes/Sibyll/testSibyll.cc b/Processes/Sibyll/testSibyll.cc
index 7e8049524e880e5528a87bd4d7076956cb2d14bf..15e9fa2e7117f09b2e8642719a95b3216db7eb32 100644
--- a/Processes/Sibyll/testSibyll.cc
+++ b/Processes/Sibyll/testSibyll.cc
@@ -23,20 +23,30 @@ TEST_CASE("Sibyll", "[processes]") {
 
   SECTION("Sibyll -> Corsika") {
     REQUIRE(corsika::particles::Electron::GetCode() ==
-            process::sibyll::ConvertFromSibyll(process::sibyll::Code::Electron));
+            process::sibyll::ConvertFromSibyll(process::sibyll::SibyllCode::Electron));
   }
 
   SECTION("Corsika -> Sibyll") {
     REQUIRE(process::sibyll::ConvertToSibyll(corsika::particles::Electron::GetCode()) ==
-            process::sibyll::Code::Electron);
+            process::sibyll::SibyllCode::Electron);
     REQUIRE(process::sibyll::ConvertToSibyllRaw(corsika::particles::Proton::GetCode()) ==
             13 );
   }
 
   SECTION("handledBySibyll") {
-    REQUIRE(process::sibyll::HandledBySibyll(corsika::particles::Electron::GetCode()));
+    REQUIRE(process::sibyll::KnownBySibyll(corsika::particles::Electron::GetCode()));
 
     REQUIRE_FALSE(
-        process::sibyll::HandledBySibyll(corsika::particles::XiPrimeC0::GetCode()));
+        process::sibyll::KnownBySibyll(corsika::particles::XiPrimeC0::GetCode()));
+  }
+
+  SECTION("canInteractInSibyll") {
+    REQUIRE(process::sibyll::CanInteract(corsika::particles::Proton::GetCode()));
+    REQUIRE(process::sibyll::CanInteract(corsika::particles::XiCPlus::GetCode()));
+
+    REQUIRE_FALSE(
+		  process::sibyll::CanInteract(corsika::particles::Electron::GetCode()));
+    REQUIRE_FALSE(
+		  process::sibyll::CanInteract(corsika::particles::SigmaC0::GetCode()));
   }
 }