diff --git a/EduNetworkBuilder/NB.cs b/EduNetworkBuilder/NB.cs
index fe8f95e..05dc50d 100644
--- a/EduNetworkBuilder/NB.cs
+++ b/EduNetworkBuilder/NB.cs
@@ -96,7 +96,7 @@ namespace EduNetworkBuilder
         vpn, vpn_encryption, vpn_decryption, ip_address, masquerade, forward, arrived, network_interface}
     public enum HowToBreak { PowerOff, EthernetBreak, EthernetCorrupt, EthernetRemoveLink, LockOutSwitch,
         WirelessBreakSSID, WirelessBreakKey, DeviceChangeIP, DeviceChangeGW, StaticRouteClear,
-        StaticRouteCorrupt, VLANChange, VPNChangeEndpoint, VPNChangeKey}
+        StaticRouteCorrupt, VLANChange, VPNChangeEndpoint, VPNChangeKey, BreakDevice }
 
     [Serializable]
     public struct HostNicID //This holds a unique identifier for a network card.  Links use this to know what it is connected to
@@ -1243,6 +1243,8 @@ namespace EduNetworkBuilder
                 case HowToBreak.WirelessBreakKey:
                 case HowToBreak.WirelessBreakSSID:
                     return TraversalTechnology.wireless;
+                case HowToBreak.BreakDevice:
+                    return TraversalTechnology.any;
             }
             return TraversalTechnology.none;
         }
diff --git a/EduNetworkBuilder/NetTest.cs b/EduNetworkBuilder/NetTest.cs
index e602595..be697a6 100644
--- a/EduNetworkBuilder/NetTest.cs
+++ b/EduNetworkBuilder/NetTest.cs
@@ -139,6 +139,9 @@ namespace EduNetworkBuilder
                         case NetTestType.DeviceNeedsUPS:
                             toreturn = NB.Translate("NT_TstDescriptNeedsUPS");
                             break;
+                        case NetTestType.DeviceBlowsUpWithPower:
+                            toreturn = NB.Translate("NT_TstDescriptBadPowersupply");
+                            break;
                         case NetTestType.NeedsDefaultGW:
                             toreturn = NB.Translate("NT_TstDscriptGteway");
                             break;
@@ -229,6 +232,9 @@ namespace EduNetworkBuilder
                         case NetTestType.DeviceNeedsUPS:
                             toreturn = NB.Translate("NT_TstDescriptNeedsUPS2");
                             break;
+                        case NetTestType.DeviceBlowsUpWithPower:
+                            toreturn = NB.Translate("NT_TstDescriptBadPowersupply2");
+                            break;
                         case NetTestType.NeedsDefaultGW:
                             toreturn = NB.Translate("NT_TstDiscriptGteway2");
                             break;
diff --git a/EduNetworkBuilder/Network.cs b/EduNetworkBuilder/Network.cs
index 6318834..60ea3d7 100644
--- a/EduNetworkBuilder/Network.cs
+++ b/EduNetworkBuilder/Network.cs
@@ -2098,6 +2098,7 @@ namespace EduNetworkBuilder
             if (BrokenItems.Contains(WhatBreak)) return 0; //it was already done
             NetworkDevice tDevice = null;
             NetworkLink tLink = null;
+            NetTest tTest = null;
             if (What is NetworkDevice) tDevice = (NetworkDevice)What;
             if (What is NetworkLink) tLink = (NetworkLink)What;
             switch(How)
@@ -2171,6 +2172,39 @@ namespace EduNetworkBuilder
                     if (How == HowToBreak.WirelessBreakKey && rndEnd.BreakWirelessKey(tnic.NicName()))
                         didit = 2;
                     break;
+                case HowToBreak.BreakDevice:
+                    //The device can be frozen, have bad power, or need a UPS, or just be burnt
+                    Random rnd = NB.GetRandom();
+                    int i = rnd.Next(4);
+                    if(i==0)
+                    {
+                        How = HowToBreak.BreakDevice;
+                        Data = "frozen";
+                        tTest = new NetTest(What.hostname, What.hostname, NetTestType.DeviceIsFrozen);
+                        NetTests.Add(tTest);
+                    }
+                    else if(i == 1)
+                    {
+                        How = HowToBreak.BreakDevice;
+                        Data = "BlowsUp";
+                        tTest = new NetTest(What.hostname, What.hostname, NetTestType.DeviceBlowsUpWithPower);
+                        NetTests.Add(tTest);
+                    }
+                    else if (i == 2)
+                    {
+                        How = HowToBreak.BreakDevice;
+                        Data = "Needs UPS";
+                        tTest = new NetTest(What.hostname, What.hostname, NetTestType.DeviceNeedsUPS);
+                        NetTests.Add(tTest);
+                    }
+                    else if (i == 3)
+                    {
+                        How = HowToBreak.BreakDevice;
+                        Data = "burnt";
+                        tDevice.IsBurned = true;  //Burn the device
+                    }
+                    didit = 1;
+                    break;
             }
             if(didit > 0)
                 BrokenItems.Add(WhatBreak);
@@ -2199,6 +2233,9 @@ namespace EduNetworkBuilder
             //Fail if we cannot do it
             TraversalTechnology WhatNeeded = NB.TechnologyNeededToBreak(How);
 
+            if (How == HowToBreak.BreakDevice)
+                Console.WriteLine("Trying to break it");
+
             int count = 0;
             while(count < 3)
             {
diff --git a/EduNetworkBuilder/Resources/languages/edustrings.resx b/EduNetworkBuilder/Resources/languages/edustrings.resx
index 232a4a1..bfb4fab 100644
--- a/EduNetworkBuilder/Resources/languages/edustrings.resx
+++ b/EduNetworkBuilder/Resources/languages/edustrings.resx
@@ -2021,4 +2021,12 @@
     Needs a UPS
     NT_TstDescriptNeedsUPS2 = Needs a UPS
   
+  
+    hardware problem
+    NT_TstDescriptBadPowersupply = hardware problem
+  
+  
+    Bad power supply
+    NT_TstDescriptBadPowersupply2 = bad power supply
+  
 
\ No newline at end of file