private void OnMessage(InsteonMessage message)
 {
     if (message.Properties.ContainsKey(PropertyKey.FromAddress))
     {
         int address = message.Properties[PropertyKey.FromAddress];
         if (network.Devices.ContainsKey(address))
         {
             Log.WriteLine("Device {0} received message {1}", InsteonAddress.Format(address), message.ToString());
             InsteonDevice device = network.Devices.Find(address);
             device.OnMessage(message);
         }
         else if (message.MessageType == InsteonMessageType.SetButtonPressed)
         {
             // don't warn about SetButtonPressed message from unknown devices, because it may be from a device about to be added
         }
         else if (network.AutoAdd)
         {
             Log.WriteLine("Unknown device {0} received message {1}, adding device", InsteonAddress.Format(address), message.ToString());
             InsteonDevice device = network.Devices.Add(new InsteonAddress(address), new InsteonIdentity());
             device.OnMessage(message);
         }
         else
         {
             Log.WriteLine("WARNING: Unknown device {0} received message {1}", InsteonAddress.Format(address), message.ToString());
         }
     }
     else
     {
         Log.WriteLine("Controller received message {0}", message.ToString());
         network.Controller.OnMessage(message);
     }
 }