diff --git a/filesystemwatcher/README.md b/filesystemwatcher/README.md
new file mode 100644
index 0000000..da229ca
--- /dev/null
+++ b/filesystemwatcher/README.md
@@ -0,0 +1,65 @@
+Overview:
+
+FileSystemWatcher reports changes that are made to a monitored directory by signaling a registered callback function and passing that function a list of changes that have occurred.  Each element of the list represents a file and the action that was performed on that file. 
+
+Example:
+
+    ADDED: /Users/jared/Desktop/test.txt
+
+The list is held in a vector of type sEventInfo, where sEventInfo is a struct defined as follows:
+
+    enum eEvent {
+        ADDED = 0,
+        MODIFIED,
+        DELETED
+    };
+
+    struct sEventInfo {
+        eEvent event;
+        std::string absFilePath;
+    };
+
+The eEvent enumerator specifies the action taken on the file and the string absFilePath is the absolute file path of the file.
+
+Usage:
+
+SimpleEventCatcher is a dummy class that serves as an example of how to register for signals from FileSystemWatcher.  These are the basic steps:
+
+    // invoke file system watcher on specified path
+    FileSystemWatcher watcher("/Users/jared/Desktop");
+
+    // pass the instance of FileSystemWatcher to the class
+    // that will register for event notifications
+    SimpleEventCatcher dirEventCatcher(&watcher);
+
+    // register for directory event signal (callback function)
+    QObject::connect(watcher, SIGNAL(dirEventSignal(std::vector<sEventInfo>)), this,
+                     SLOT(handleDirEvent(std::vector<sEventInfo>)));
+
+    // implement handleDirEvent
+    void SimpleEventCatcher::handleDirEvent(std::vector<sEventInfo>)
+    {
+        /* implementation here */
+    }
+
+Debug:
+
+The debug flag can be set in filesystemwatcher.h.  It is set to 1 by default and outputs the following information to the console:
+
+[BOOTSTRAP] 
+
+[TIMER] Triggered Path:  "/Users/jared/Desktop" 
+	 "ADDED: /Users/jared/Desktop/test2.txt" 
+	 "ADDED: /Users/jared/Desktop/test.txt" 
+
+[SIGNAL] From SimpleEventCatcher Slot: 
+	 "ADDED: /Users/jared/Desktop/test2.txt" 
+	 "ADDED: /Users/jared/Desktop/test.txt" 
+
+[\BOOTSTRAP] 
+
+[WATCHER] Triggered Path:  "/Users/jared/Desktop" 
+	 "DELETED: /Users/jared/Desktop/test2.txt" 
+
+[SIGNAL] From SimpleEventCatcher Slot: 
+	 "DELETED: /Users/jared/Desktop/test2.txt" 
diff --git a/filesystemwatcher/filesystemwatcher.cpp b/filesystemwatcher/filesystemwatcher.cpp
index 79363e8..b887292 100644
--- a/filesystemwatcher/filesystemwatcher.cpp
+++ b/filesystemwatcher/filesystemwatcher.cpp
@@ -50,7 +50,13 @@
 void FileSystemWatcher::bootstrap()
 {
     // bootstrap specific steps
+#if DEBUG
+    qDebug() << endl << "[BOOTSTRAP]";
+#endif
     timerCallbackSlot();
+#if DEBUG
+    qDebug() << endl << "[\\BOOTSTRAP]";
+#endif
 }
 
 void FileSystemWatcher::watcherCallbackSlot(QString dirPath)
@@ -82,8 +88,9 @@
     // DEBUG: Print Changes
     printChanges(dirChanges);
 #endif
-    // emit the signal
-    emit dirEventSignal(dirChanges);
+    // emit the signal if not empty
+    if(!dirChanges.empty())
+        emit dirEventSignal(dirChanges);
 }
 
 QHash<QString, qint64> FileSystemWatcher::scanDirectory(QString dirPath)
diff --git a/filesystemwatcher/simpleeventcatcher.cpp b/filesystemwatcher/simpleeventcatcher.cpp
new file mode 100644
index 0000000..f1061fb
--- /dev/null
+++ b/filesystemwatcher/simpleeventcatcher.cpp
@@ -0,0 +1,70 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2012-2013 University of California, Los Angeles
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Jared Lindblom <lindblom@cs.ucla.edu>
+ */
+
+#include "simpleeventcatcher.h"
+
+SimpleEventCatcher::SimpleEventCatcher(FileSystemWatcher* watcher, QObject *parent) :
+    QObject(parent)
+{
+    // register for directory event signal (callback function)
+    QObject::connect(watcher, SIGNAL(dirEventSignal(std::vector<sEventInfo>)), this, SLOT(handleDirEvent(std::vector<sEventInfo>)));
+}
+
+void SimpleEventCatcher::handleDirEvent(std::vector<sEventInfo> dirChanges)
+{
+    qDebug() << endl << "[SIGNAL] From SimpleEventCatcher Slot:";
+
+    if(!dirChanges.empty())
+    {
+        for(size_t i = 0; i < dirChanges.size(); i++)
+        {
+            QString tempString;
+
+            eEvent event = dirChanges[i].event;
+            QString absFilePath = QString::fromStdString(dirChanges[i].absFilePath);
+
+            switch(event)
+            {
+            case ADDED:
+                tempString.append("ADDED: ");
+                break;
+            case MODIFIED:
+                tempString.append("MODIFIED: ");
+                break;
+            case DELETED:
+                tempString.append("DELETED: ");
+                break;
+            }
+
+            tempString.append(absFilePath);
+
+            qDebug() << "\t" << tempString;
+        }
+    }
+    else
+    {
+        qDebug() << "\t[EMPTY]";
+    }
+}
+
+#if WAF
+#include "simpleeventcatcher.moc"
+#include "simpleeventcatcher.cpp.moc"
+#endif
diff --git a/filesystemwatcher/simpleeventcatcher.h b/filesystemwatcher/simpleeventcatcher.h
new file mode 100644
index 0000000..2a858fd
--- /dev/null
+++ b/filesystemwatcher/simpleeventcatcher.h
@@ -0,0 +1,41 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2012-2013 University of California, Los Angeles
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Jared Lindblom <lindblom@cs.ucla.edu>
+ */
+
+#ifndef SIMPLEEVENTCATCHER_H
+#define SIMPLEEVENTCATCHER_H
+
+#include "filesystemwatcher.h"
+#include <QObject>
+#include <QDebug>
+#include <vector>
+#include <structs.h>
+
+class SimpleEventCatcher : public QObject
+{
+    Q_OBJECT
+public:
+    explicit SimpleEventCatcher(FileSystemWatcher* watcher, QObject *parent = 0);
+
+public slots:
+    // handle signal
+    void handleDirEvent(std::vector<sEventInfo> dirChanges);
+};
+
+#endif // SIMPLEEVENTCATCHER_H
diff --git a/filesystemwatcher/structs.h b/filesystemwatcher/structs.h
new file mode 100644
index 0000000..93008b1
--- /dev/null
+++ b/filesystemwatcher/structs.h
@@ -0,0 +1,35 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2012-2013 University of California, Los Angeles
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Jared Lindblom <lindblom@cs.ucla.edu>
+ */
+
+#ifndef STRUCTS_H
+#define STRUCTS_H
+
+enum eEvent {
+    ADDED = 0,
+    MODIFIED,
+    DELETED
+};
+
+struct sEventInfo {
+    eEvent event;
+    std::string absFilePath;
+};
+
+#endif // STRUCTS_H
