 
     # drop deleted records
     deltaN = data.length - newdata.length
-    data = newdata
-    fs.writeFileSync blacklistfile, JSON.stringify(data), 'utf-8'
-
-    usermsg = "Removed #{deltaN} entries from firewall blacklist.  " +
-      "Change will be applied in < 5 minutes.\n" +
-      "Removed: ```"+ arr.join("\n") + "```"
+    fwdata.blacklist = newdata
+    fs.writeFileSync blacklistfile, JSON.stringify(fwdata), 'utf-8'
+
+    if deltaN > 0
+      usermsg = "Removed #{deltaN} entries from firewall blacklist.  " +
+        "Change will be applied in < 5 minutes.\n" +
+        "Removed: ```"+ arr.join("\n") + "```"
+    else usermsg = "Blacklist delete request did not match any records."
     msg.reply usermsg
 
     logmsg = "#{modulename}: robot responded to #{msg.envelope.user.name}: " +
       "removed #{deltaN} entries from blacklist"
     robot.logger.info logmsg
+
+    for un in fwdata.notify
+      robot.send { room: un }, usermsg unless un == who or deltaN < 1
+
+    return
+
+  robot.respond /fw (?:blacklist|b) (?:notify|n)(?: ([^ ]+))$/i, (msg) ->
+    user = msg.envelope.user
+    who = user.name
+    who = msg.match[1] if msg.match[1]
+
+    logmsg = "#{modulename}: #{user.name} requested: notify #{who}"
+    robot.logger.info logmsg
+
+    fwdata.notify.push who unless who in fwdata.notify
+
+    usermsg = "Added #{who} to firewall blacklist notifications."
+    msg.reply usermsg
+
+    logmsg = "#{modulename}: robot responded to #{user.name}: " +
+      "added #{who} to blacklist notifications"
+    robot.logger.info logmsg
+
+    fs.writeFileSync blacklistfile, JSON.stringify(fwdata), 'utf-8'
+
+    return
+
+  robot.respond /fw (?:blacklist|b) (?:notify|n) (?:list|l)$/i, (msg) ->
+    who = msg.envelope.user.name
+
+    logmsg = "#{modulename}: #{who} requested: notify list"
+    robot.logger.info logmsg
+
+    usermsg = "Notify list: "+ fwdata.notify.join(', ')
+    msg.reply usermsg
+
+    logmsg = "#{modulename}: robot responded to #{who}: " +
+      fwdata.notify.join(', ')
+    robot.logger.info logmsg
+
+    return
+
+  robot.respond /fw (?:blacklist|b) (?:unnotify|un)(?: ([^ ]+))$/i, (msg) ->
+    user = msg.envelope.user
+    who = msg.envelope.user.name
+    who = msg.match[1] if msg.match[1]
+
+    logmsg = "#{modulename}: #{user.name} requested: unnotify #{who}"
+    robot.logger.info logmsg
+
+    n = fwdata.notify.indexOf(who)
+    fwdata.notify.splice(n, 1) if n > -1
+
+    usermsg = "Removed #{who} from firewall blacklist notifications."
+    msg.reply usermsg
+
+    logmsg = "#{modulename}: robot responded to #{user.name}: " +
+      "removed #{who} from blacklist notifications"
+    robot.logger.info logmsg
+
+    fs.writeFileSync blacklistfile, JSON.stringify(fwdata), 'utf-8'
+
+    return
+

    robot.logger.info logmsg

    arr = []
    for obj in data
      if obj.type == 'cidr' and moment(obj.expires).isAfter()
        arr.push obj.val
    content = '# nothing here yet! #'

    arr = []
    fmt = '%-4s %-50s %-15s %s'
    arr.push sprintf fmt, 'Type', 'Value', 'Expiration', 'Creator'
    for obj in fwdata.blacklist
      expires = moment(obj.expires)
      if bl_type and bl_type != obj.type
        #console.log 'skipping type: '+ obj.type
