diff --git a/addons/grenades/CfgAmmo.hpp b/addons/grenades/CfgAmmo.hpp
index 61f20eb935..120d3ab5ea 100644
--- a/addons/grenades/CfgAmmo.hpp
+++ b/addons/grenades/CfgAmmo.hpp
@@ -5,28 +5,28 @@ class CfgAmmo {
         flareSize = 12;
         timeToLive = 60;
     };
+
     class F_40mm_White: FlareBase {
         intensity = 40000;
         flareSize = 12;
     };
+
     class F_20mm_White: FlareBase {
         intensity = 20000;
         flareSize = 6;
     };
+
     class F_Signal_Green: FlareBase {
         intensity = 20000;
         flareSize = 12;
     };
+
     class Flare_82mm_AMOS_White: FlareCore {
         intensity = 80000;
         flareSize = 12;
         timeToLive = 60;
     };
 
-    class F_20mm_Red: F_20mm_White {};
-    class F_20mm_Green: F_20mm_White {};
-    class F_20mm_Yellow: F_20mm_White {};
-
     class ACE_F_Hand_White: F_20mm_White {
         grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
         grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5};
@@ -38,6 +38,8 @@ class CfgAmmo {
         SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70};
         timeToLive = 60;
     };
+
+    class F_20mm_Red;
     class ACE_F_Hand_Red: F_20mm_Red {
         grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
         grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5};
@@ -49,6 +51,8 @@ class CfgAmmo {
         SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70};
         timeToLive = 60;
     };
+
+    class F_20mm_Green;
     class ACE_F_Hand_Green: F_20mm_Green {
         grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
         grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5};
@@ -60,6 +64,8 @@ class CfgAmmo {
         SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70};
         timeToLive = 60;
     };
+
+    class F_20mm_Yellow;
     class ACE_F_Hand_Yellow: F_20mm_Yellow {
         grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
         grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5};
@@ -72,20 +78,21 @@ class CfgAmmo {
         timeToLive = 60;
     };
 
-    class ACE_G_M84: F_20mm_Yellow {
-        useFlare = 0;
-        flareSize = 0;
-        intensity = 0;
-        grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
-        grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5};
-        soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
-        SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100};
-        SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100};
-        SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100};
-        SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70};
-        SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70};
+    class SmokeShell;
+    class ACE_G_M84: SmokeShell {
+        model = PATHTOF(models\ACE_m84_thrown.p3d);
+        dangerRadiusHit = -1;
+        suppressionRadiusHit = 20;
+        typicalSpeed = 22;
+        cost = 40;
+        deflecting = 15;
         timeToLive = 6;
         fuseDistance = 2.3;
-        model = PATHTOF(models\ACE_m84_thrown.p3d);
+        grenadeFireSound[] = {};
+        grenadeBurningSound[] = {};
+        aiAmmoUsageFlags = "0";
+        smokeColor[] = {0,0,0,0};
+        effectsSmoke = "ACE_M84FlashbangEffect";
+        whistleDist = 0;
     };
 };
diff --git a/addons/grenades/Effects.hpp b/addons/grenades/Effects.hpp
new file mode 100644
index 0000000000..c9e214de5c
--- /dev/null
+++ b/addons/grenades/Effects.hpp
@@ -0,0 +1,4 @@
+
+class ACE_M84FlashbangEffect {
+    // empty
+};
diff --git a/addons/grenades/config.cpp b/addons/grenades/config.cpp
index c2a899d66c..2f9e631fe1 100644
--- a/addons/grenades/config.cpp
+++ b/addons/grenades/config.cpp
@@ -17,3 +17,5 @@ class CfgPatches {
 #include "CfgWeapons.hpp"
 #include "CfgMagazines.hpp"
 #include "CfgVehicles.hpp"
+
+#include "Effects.hpp"