diff --git a/flowspec/tasks.py b/flowspec/tasks.py
index 6bae98a1e6064e81eef8e08c9a21109a8011b9ef..a6767759b59eada98b6e5cdf2014706d30c8272f 100644
--- a/flowspec/tasks.py
+++ b/flowspec/tasks.py
@@ -389,11 +389,11 @@ def mitigation_stats_lock_create(wait=0):
         time.sleep(1)
     return success;
 
-def snmp_lock_remove():
+def mitigation_stats_lock_remove():
     try:
       os.rmdir(settings.SNMP_POLL_LOCK)
     except Exception as e:
-      logger.error("snmp_lock_remove(): failed "+str(e))
+      logger.error("mitigation_stats_lock_remove(): failed "+str(e))
 
 def exit_process():
     #import sys
@@ -418,7 +418,7 @@ def poll_snmp_statistics():
 #@shared_task(ignore_result=True, time_limit=580, soft_time_limit=550)
 @shared_task(ignore_result=True, max_retries=0)
 def mitigation_stats_poll_statistics():
-    from utils import junossnmpstats
+    from utils.mitigation_stats_collector import mitigation_stats_collector_specific 
 
     if not mitigation_stats_lock_create(0):
       return
@@ -437,10 +437,10 @@ def mitigation_stats_poll_statistics():
       pid = os.getpid()
       logger.info("mitigation_stats_poll_statistics(): in child process (pid="+str(pid)+", ppid="+str(ppid)+")")
       try:
-        junossnmpstats.poll_snmp_statistics()        
+        mitigation_stats_collector_specific.poll_snmp_statistics()        
       except Exception as e:
         logger.error("mitigation_stats_poll_statistics(): exception occured in snmp poll (pid="+str(pid)+", ppid="+str(ppid)+"): "+str(e))
-      snmp_lock_remove()
+      mitigation_stats_lock_remove()
       #exit_process()
 
       # not used anymore: will lead to exit of parent process
@@ -458,20 +458,20 @@ def mitigation_stats_poll_statistics():
 
 ##
 
-def mitigation_stats_add_initial_zero_value_inner(routepk, route_id, route, snmpstats, add_initial_value=True, zero_or_null=True, reset_remember_last_value=True, update_remember_last_value=False):
+def mitigation_stats_add_initial_zero_value_inner(routepk, route_id, route, mitigation_stats_collector_specific, add_initial_value=True, zero_or_null=True, reset_remember_last_value=True, update_remember_last_value=False):
 
         logger.info("mitigation_stats_add_initial_zero_value_inner(): called: routepk="+str(routepk)+" route_id="+str(route_id)+" add_initial_value="+str(add_initial_value)+" zero_or_null="+str(zero_or_null)+" reset_remember_last_value="+str(reset_remember_last_value)+" update_remember_last_value="+str(update_remember_last_value))
 
         if add_initial_value:
           try:
-            snmpstats.add_initial_zero_value(route_id, route, zero_or_null)
+            mitigation_stats_collector_specific.add_initial_zero_value(route_id, route, zero_or_null)
             logger.debug("mitigation_stats_add_initial_zero_value_inner(): (1) routepk="+str(routepk)+","+str(zero_or_null)+" add_initial_zero_value sucesss")
           except Exception as e:
             logger.error("mitigation_stats_add_initial_zero_value_inner(): (1) routepk="+str(routepk)+","+str(zero_or_null)+" add_initial_zero_value failed: "+str(e))
 
         if reset_remember_last_value:
           try:
-            snmpstats.clean_oldmatched__for_changed_ratelimitrules_whileactive(route_id, route)
+            mitigation_stats_collector_specific.clean_oldmatched__for_changed_ratelimitrules_whileactive(route_id, route)
             logger.debug("mitigation_stats_add_initial_zero_value_inner(): (2) routepk="+str(routepk)+","+str(zero_or_null)+" clean_oldmatched__for_changed_ratelimitrules_whileactive sucesss")
           except Exception as e:
             logger.error("mitigation_stats_add_initial_zero_value_inner(): (2) routepk="+str(routepk)+","+str(zero_or_null)+" clean_oldmatched__for_changed_ratelimitrules_whileactive failed: "+str(e))
@@ -479,7 +479,7 @@ def mitigation_stats_add_initial_zero_value_inner(routepk, route_id, route, snmp
         elif update_remember_last_value:
           try:
             logger.info("mitigation_stats_add_initial_zero_value_inner(): (3a) routepk="+str(routepk)+" route_id="+str(route_id)+" add_initial_value="+str(add_initial_value)+" zero_or_null="+str(zero_or_null)+" reset_remember_last_value="+str(reset_remember_last_value)+" update_remember_last_value="+str(update_remember_last_value))
-            snmpstats.remember_oldmatched__for_changed_ratelimitrules_whileactive(route_id, route)
+            mitigation_stats_collector_specific.remember_oldmatched__for_changed_ratelimitrules_whileactive(route_id, route)
             logger.info("mitigation_stats_add_initial_zero_value_inner(): (3b) routepk="+str(routepk)+","+str(zero_or_null)+" remember_oldmatched__for_changed_ratelimitrules_whileactive sucesss")
           except Exception as e:
             logger.error("mitigation_stats_add_initial_zero_value_inner(): (4) routepk="+str(routepk)+","+str(zero_or_null)+" remember_oldmatched__for_changed_ratelimitrules_whileactive failed: "+str(e))
@@ -487,7 +487,7 @@ def mitigation_stats_add_initial_zero_value_inner(routepk, route_id, route, snmp
 
 @shared_task(ignore_result=True, max_retries=0)
 def mitigation_stats_add_initial_zero_value(routepk, route_id, add_initial_value=True, zero_or_null=True, reset_remember_last_value=True, update_remember_last_value=False):
-    from utils import junossnmpstats
+    from utils.mitigation_stats_collector import mitigation_stats_collector_specific 
     logger.info("mitigation_stats_add_initial_zero_value(): routepk="+str(routepk)+" route_id="+str(route_id)+" add_initial_value="+str(add_initial_value)+" zero_or_null="+str(zero_or_null)+" reset_remember_last_value="+str(reset_remember_last_value)+" update_remember_last_value="+str(update_remember_last_value))
    
     route = None
@@ -503,7 +503,7 @@ def mitigation_stats_add_initial_zero_value(routepk, route_id, add_initial_value
 
     if not use_fork:
     
-       mitigation_stats_add_initial_zero_value_inner(routepk, route_id, route, junossnmpstats, add_initial_value=add_initial_value, zero_or_null=zero_or_null, reset_remember_last_value=reset_remember_last_value, update_remember_last_value=update_remember_last_value)
+       mitigation_stats_add_initial_zero_value_inner(routepk, route_id, route, mitigation_stats_collector_specific, add_initial_value=add_initial_value, zero_or_null=zero_or_null, reset_remember_last_value=reset_remember_last_value, update_remember_last_value=update_remember_last_value)
 
     else:
       signal.signal(signal.SIGCHLD, handleSIGCHLD)
@@ -520,7 +520,7 @@ def mitigation_stats_add_initial_zero_value(routepk, route_id, add_initial_value
         pid = os.getpid()
         logger.info("mitigation_stats_add_initial_zero_value(): in child process (pid="+str(pid)+", ppid="+str(ppid)+")")
        
-        mitigation_stats_add_initial_zero_value_inner(routepk, route_id, route, junossnmpstats, add_initial_value=add_initial_value, zero_or_null=zero_or_null, reset_remember_last_value=reset_remember_last_value, update_remember_last_value=update_remember_last_value)
+        mitigation_stats_add_initial_zero_value_inner(routepk, route_id, route, mitigation_stats_collector_specific, add_initial_value=add_initial_value, zero_or_null=zero_or_null, reset_remember_last_value=reset_remember_last_value, update_remember_last_value=update_remember_last_value)
 
         #exit_process()
 
diff --git a/flowspy/settings.py.dist b/flowspy/settings.py.dist
index d37d671ce45e5fade7bf6e5789a895257487ed94..ee68bedace2c9d0075b47e045543d97bb0627c55 100644
--- a/flowspy/settings.py.dist
+++ b/flowspy/settings.py.dist
@@ -552,6 +552,12 @@ NETCONF_USER = ""
 NETCONF_PASS = ""
 NETCONF_PORT = 830
 
+##############################################################################
+##############################################################################
+# generic mitigation statistics support
+
+MITIGATION_STATISTIC_COLLECTOR_SPECIFIC_CLASS="mitigation_stats_collector_specific_junos_snmp"
+
 ##############################################################################
 ##############################################################################
 # SNMP statistic fetching
diff --git a/utils/mitigation_stats_collector.py b/utils/mitigation_stats_collector.py
new file mode 100644
index 0000000000000000000000000000000000000000..b721aad436d993dfe5882b0d3194b1b3e021dc90
--- /dev/null
+++ b/utils/mitigation_stats_collector.py
@@ -0,0 +1,13 @@
+# -*- coding: utf-8 -*- vim:fileencoding=utf-8:
+# vim: tabstop=4:shiftwidth=4:softtabstop=4:expandtab
+
+# ../flowspy/settings.py.dist
+# ../flowspy/settings.py
+from django.conf import settings
+
+if hasattr(settings, "MITIGATION_STATISTIC_COLLECTOR_SPECIFIC_CLASS") and settings.PROXY_CLASS == "mitigation_stats_collector_specific_junos_snmp":
+  from utils import mitigation_stats_collector_specific_junos_snmp as mitigation_stats_collector_specific
+else: # default is junos_snmp for compatibility
+  from utils import mitigation_stats_collector_specific_junos_snmp as mitigation_stats_collector_specific
+
+
diff --git a/utils/junossnmpstats.py b/utils/mitigation_stats_collector_specific_junos_snmp.py
similarity index 99%
rename from utils/junossnmpstats.py
rename to utils/mitigation_stats_collector_specific_junos_snmp.py
index 4ed46e546f454ba38632405956acaa9d57d56854..c4e113ecca4d2c5a1c0b0b1b8d88eb3a7f6fbaf9 100644
--- a/utils/junossnmpstats.py
+++ b/utils/mitigation_stats_collector_specific_junos_snmp.py
@@ -320,6 +320,9 @@ def helper_get_countertype_of_rule(ruleobj):
 
 #
 
+def poll_mitigation_statistics():
+    return poll_snmp_statistics()
+
 def poll_snmp_statistics():
     logger.debug("poll_snmp_statistics(): polling SNMP statistics.")