     if (listener)
       return
 
-    listenersCount = robot.hear /^(yesterday|today|tomorrow|blocking|sun|mon|tue|wed|thu|fri|sat)[ :\-](.*)$/i, (msg) ->
+    listenersCount = robot.catchAll (msg) ->
 
       if (!hearingRooms[msg.message.user.room])
         return
 
       today = getDate()
-      name = msg.message.user.name;
+      name = msg.message.user.name
 
       robot.brain.data.scrumNotes ?= {};
-      notes = robot.brain.data.scrumNotes[today] ?= {};
-      notes[name] ?= {};
+      notes = robot.brain.data.scrumNotes[today] ?= {}
 
-      key = msg.match[1].toLowerCase();
+      notes._raw ?= [];
+      notes._raw.push([new Date().getTime(), name, msg.message.text])
 
-      notes[name][key] ?= [];
-      notes[name][key].push(msg.match[2]);
+      keyValue = /^([^ :\n\r\t]+)[ :\n\t](.+)$/m.exec(msg.message.text)
+      if (keyValue)
+        notes[name] ?= {}
+        key = keyValue[1].toLowerCase()
+        if (key in messageKeys)
+          notes[name][key] ?= [];
+          notes[name][key].push(keyValue[2])
 
     listener = robot.listeners[listenersCount - 1]
 

    notes = robot.brain.data.scrumNotes?[today]

    if !notes
      msg.reply('no notes so far');
    else
      msg.reply(JSON.stringify(robot.brain.data.scrumNotes?[today], null, 2));

  robot.respond /take scrum notes/i, (msg) ->



    delete hearingRooms[msg.message.user.room];

    msg.reply("not taking scrum notes anymore");

    today = getDate()
    notes = robot.brain.data.scrumNotes?[today]

    users = (user for user in Object.keys(notes) when user isnt '_raw')

    count = if notes then users.length else 0

    status = "I got no notes today"
    if count > 0
      status = ["I got notes from ", users.slice(0,Math.min(3, users.length - 1)).join(', '), " and ", if users.length > 3 then (users.length-3)+' more' else users[users.length-1]].join('')

    msg.reply(status);

    if (Object.keys(hearingRooms).length < 1)
      stopHearing()
