       else if moment(expires).isValid()
         bl.expires = moment(expires).format()
       else
-        failed = true
         usermsg = "invalid expiration date: #{expires}"
-        msg.reply usermsg
+        return msg.reply usermsg
     
-    unless failed
-      logmsg = "#{modulename}: #{msg.envelope.user.name} requested: " +
-        "blacklist #{bl.type} #{bl.val} expires #{bl.expires}"
-      robot.logger.info logmsg
-
-      data.push bl
-      fs.writeFileSync blacklistfile, JSON.stringify(data), 'utf-8'
-
-      usermsg = "Added #{bl.val} to firewall blacklist, " +
-        "expiring #{bl.expires}.  Change will be applied in < 5 minutes."
-      msg.reply usermsg
-
-      logmsg = "#{modulename}: robot responded to #{msg.envelope.user.name}: " +
-        "added entry to blacklist"
-      robot.logger.info logmsg
+    logmsg = "#{modulename}: #{who} requested: " +
+      "blacklist #{bl.type} #{bl.val} expires #{bl.expires}"
+    robot.logger.info logmsg
+
+    fwdata.blacklist.push bl
+    fs.writeFileSync blacklistfile, JSON.stringify(fwdata), 'utf-8'
+
+    usermsg = "Added #{bl.val} to firewall blacklist, " +
+      "expiring #{bl.expires}.  Change will be applied in < 5 minutes."
+    msg.reply usermsg
+
+    logmsg = "#{modulename}: robot responded to #{who}: " +
+      "added entry to blacklist"
+    robot.logger.info logmsg
+
+    for un in fwdata.notify
+      robot.send { room: un }, usermsg unless un == who
+
+    return
 
   robot.respond /fw (?:blacklist|b) (?:delete|del|d) (url|cidr) ([^ ]+)$/i, (msg) ->
     return unless isAuthorized robot, msg
     return unless isSudo robot, msg
 
+    who = msg.envelope.user.name
     bl_type = msg.match[1]
     bl_search = msg.match[2]
 
-    logmsg = "#{modulename}: #{msg.envelope.user.name} requested: " +
+    logmsg = "#{modulename}: #{who} requested: " +
       "blacklist delete #{bl_type} #{bl_search}"
     robot.logger.info logmsg
 

    logmsg = "#{modulename}: robot responded to web request: " +
      "sent cidr blacklist"
    robot.logger.info logmsg

  robot.respond /fw(?: help|)$/, (msg) ->
    cmds = ['```']

      "displayed blacklist items and expirations"
    robot.logger.info logmsg

    return

  robot.respond /fw (?:blacklist|b) add (url|cidr) ([^ ]+)(?: ([^ ]+)|)$/i, (msg) ->
    return unless isAuthorized robot, msg
    return unless isSudo robot, msg

    who = msg.envelope.user.name

    bl =
      created: moment().format()
      expires: moment().add(1, 'months').format()
      type: msg.match[1]
      val: msg.match[2]
      creator: who

    if bl.val.toLowerCase().indexOf('https://') == 0
      usermsg = "Blacklisting of https links not supported."
