const string &host_address,
         const int ping_fail_limit_percentage,
         const int ping_congestion_limit_percentage,
+        const int congest_caused_by_fail_limit_percentage,
         const int ping_duration_congestion_thresh,
         const int n_parallel_pings,
         const LinkStatusItem link_analyzer
     LinkAnalyzer( link_analyzer ),
     PingFailLimitPercentage( ping_fail_limit_percentage ),
     PingCongestionLimitPercentage( ping_congestion_limit_percentage ),
+    CongestCausedByFailLimitPercentage(congest_caused_by_fail_limit_percentage),
     PingDurationCongestionsThresh( ping_duration_congestion_thresh*1000000 ),
     ResolvedIpCount( 0 ),
     PingsPerformedCount( 0 ),
     BOOST_ASSERT( PingsPerformedCount >= ResolvedIpCount*NParallelPingers );
 
     // timeouts are not counted towards failures, only count as congestions
-    // However, if all pings timed out even in burst mode, then we still declare
-    // the line down
-    if (InBurstMode && PingCongestionCount >= PingsPerformedCount)
+    // However, if many pings timed out even in burst mode, then we still
+    // declare the line down
+    float limit = static_cast<float>( PingsPerformedCount
+                                    * CongestCausedByFailLimitPercentage)/100.f;
+    if (InBurstMode && PingCongestionCount > limit)
     {
-        GlobalLogger.notice() << log_prefix() << "All pings timed out despite "
-            << "using more pings per IP --> assume connection is really down";
+        GlobalLogger.info() << log_prefix()
+            << "Assume congestion is actually caused by compromised connection "
+            << "to host because " << PingCongestionCount << " of "
+            << PingsPerformedCount << " burst pings timed out";
         PingsFailedCount += PingCongestionCount;
         PingCongestionCount = 0;
         ExceededPingFailedLimit = true;
 
             const std::string &host_address,
             const int ping_fail_limit_percentage,
             const int ping_congestion_limit_percentage,
+            const int congest_caused_by_fail_limit_percentage,
             const int ping_duration_congestion_thresh,
             const int n_parallel_pings,
             const LinkStatusItem link_analyzer
     int PingFailLimitPercentage;
     /// the maximum amount of pings that can be congested without warning
     int PingCongestionLimitPercentage;
+    /// threshold to decide when congestion is caused by failed connection
+    int CongestCausedByFailLimitPercentage;
     /// the threshold in micro seconds that ping can take with/out congestion
     long PingDurationCongestionsThresh;
     /// the amount of IPs that are aliases to the host DNS
 
         const long ping_interval_in_sec,
         const int ping_fail_percentage_limit,
         const int ping_congestion_percentage_limit,
+        const int congest_caused_by_fail_percentage_limit,
         const int ping_congestion_duration_thresh,
         const int ping_reply_timeout,
         LinkStatusItem link_analyzer,
     PingReplyTimeoutOrig( ping_reply_timeout ),
     HostAnalyzer( destination_address, ping_fail_percentage_limit,
                   ping_congestion_percentage_limit,
+                  congest_caused_by_fail_percentage_limit,
                   ping_congestion_duration_thresh, n_parallel_pings,
                   link_analyzer ),
     Resolver(),
 
             const long ping_interval_in_sec,
             const int ping_fail_percentage_limit,
             const int ping_congestion_percentage_limit,
+            const int congest_caused_by_fail_percentage_limit,
             const int ping_congestion_duration_thresh,
             const int ping_reply_timeout,
             LinkStatusItem link_analyzer,
 
     if (hosts.empty())
         return false;
 
+    // more variables for pingcheck, maybe should move to config?
+    int n_parallel_pings = 1;
+    int parallel_ping_delay = 100;   // ms
+    int congestion_duration_thresh = 10; // seconds
+    int congestion_percentage_thresh = 75;
+    int congest_caused_by_fail_limit_percentage = 99;
+    int ping_timeout_factor = 5;
+
     BOOST_FOREACH( const HostItem &host, hosts )
     {
         string destination_address = host->get_address();
         // get delay for this scheduler and update assigned delays
         int current_delay = boost::math::iround(delays[ping_interval_in_sec]);
         delays[ping_interval_in_sec] += delay_shifts[ping_interval_in_sec];
-        int n_parallel_pings = 2;
-        int parallel_ping_delay = 100;   // ms
-        int congestion_duration_thresh = 10; // seconds
-        int congestion_percentage_thresh = 75;
-        int ping_timeout_factor = 3;
 
         PingSchedulerItem scheduler(
                 new PingScheduler(
                         ping_interval_in_sec,
                         ping_fail_limit,
                         congestion_percentage_thresh,
+                        congest_caused_by_fail_limit_percentage,
                         congestion_duration_thresh,
                         ping_reply_timeout,
                         status_notifier,
 
 {
     int ping_fail_percentage_limit = 10;
     int ping_congestion_percentage_limit = 75;
+    int congest_caused_by_fail_percentage_limit = 90;
     int ping_congestion_duration_thresh = 5;
     int n_parallel_pings = 1;
     int resolved_ip_count = 10;
     HostStatus host_status( "localhost",
                             ping_fail_percentage_limit,
                             ping_congestion_percentage_limit,
+                            congest_caused_by_fail_percentage_limit,
                             ping_congestion_duration_thresh,
                             n_parallel_pings,
                             link_status );
 {
     int ping_fail_percentage_limit = 50;
     int ping_congestion_percentage_limit = 75;
+    int congest_caused_by_fail_percentage_limit = 90;
     int ping_congestion_duration_thresh = 5;
     int n_parallel_pings = 1;
     int resolved_ip_count = 10;
     HostStatus host_status( "localhost",
                             ping_fail_percentage_limit,
                             ping_congestion_percentage_limit,
+                            congest_caused_by_fail_percentage_limit,
                             ping_congestion_duration_thresh,
                             n_parallel_pings,
                             link_status );
 {
     int ping_fail_percentage_limit = 80;
     int ping_congestion_percentage_limit = 75;
+    int congest_caused_by_fail_percentage_limit = 90;
     int ping_congestion_duration_thresh = 5;
     int n_parallel_pings = 1;
     int resolved_ip_count = 10;
     HostStatus host_status( "localhost",
                             ping_fail_percentage_limit,
                             ping_congestion_percentage_limit,
+                            congest_caused_by_fail_percentage_limit,
                             ping_congestion_duration_thresh,
                             n_parallel_pings,
                             link_status );