simple doc of scheduler
diff --git a/include/event-scheduler.h b/include/event-scheduler.h
index b2aa929..2a10b67 100644
--- a/include/event-scheduler.h
+++ b/include/event-scheduler.h
@@ -28,6 +28,7 @@
 
 using namespace std;
 
+// callback used by libevent
 static void
 eventCallback(evutil_socket_t fd, short what, void *arg);
 
@@ -46,13 +47,22 @@
   static IntervalGeneratorPtr Null;
 };
 
+
 class Task
 {
 public:
+  // callback of this task
   typedef boost::function<void ()> Callback;
+  // tag identifies this task, should be unique
   typedef string Tag;
+  // used to match tasks
   typedef boost::function<bool (const TaskPtr &task)> TaskMatcher;
 
+  // generator is needed only when this is a periodic task
+  // two simple generators implementation (SimpleIntervalGenerator and RandomIntervalGenerator) are provided;
+  // if user needs more complex pattern in the intervals between calls, extend class IntervalGenerator
+
+  // Task is associated with Schedulers due to the requirement that libevent event is associated with an libevent event_base
   Task(const Callback &callback, const Tag &tag, const SchedulerPtr &scheduler, const IntervalGeneratorPtr &generator = IntervalGenerator::Null);
   ~Task();
 
@@ -74,6 +84,7 @@
   bool
   isPeriodic() { return m_generator != IntervalGenerator::Null; }
 
+  // Task needs to be resetted after the callback is invoked if it is to be schedule again; just for safety
   void
   reset();
 
@@ -100,24 +111,39 @@
   Scheduler();
   virtual ~Scheduler();
 
+  // start event scheduling
   virtual void
   start();
 
+  // stop event scheduling
   virtual void
   shutdown();
 
+  // add a one time task, delay is in seconds
+  // if task with the same tag exists, return false
   virtual bool
   addTask(const TaskPtr &task, double delay);
 
+  // add periodic task; task must have an interval generator
+  // if task with the same tag exists, return false
   virtual bool
   addTask(const TaskPtr &task);
 
+  // delete task by tag, regardless of whether it's invoked or not
+  // if no task is found, no effect
   virtual void
   deleteTask(const Task::Tag &tag);
 
+  // delete tasks by matcher, regardless of whether it's invoked or not
+  // this is flexiable in that you can use any form of criteria in finding tasks to delete
+  // but keep in mind this is a linear scan
+
+  // if no task is found, no effect
   virtual void
   deleteTask(const Task::TaskMatcher &matcher);
 
+  // for periodic tasks, reschedule the next invoke
+  // task must already have been added to the scheduler, otherwise this is no effect
   virtual void
   rescheduleTask(const Task::Tag &tag);
 
@@ -147,6 +173,7 @@
   boost::thread m_thread;
 };
 
+
 class SimpleIntervalGenerator : public IntervalGenerator
 {
 public:
@@ -158,6 +185,7 @@
   double m_interval;
 };
 
+// generates intervals with uniform distribution
 class RandomIntervalGenerator : public IntervalGenerator
 {
 public:
@@ -169,6 +197,10 @@
   } Direction;
 
 public:
+  // percent is random-range/interval; e.g. if interval is 10 and you wish the random-range to be 2
+  // e.g. 9 ~ 11, percent = 0.2
+  // direction shifts the random range; e.g. in the above example, UP would produce a range of
+  // 10 ~ 12, DOWN of 8 ~ 10, and EVEN of 9 ~ 11
   RandomIntervalGenerator(double interval, double percent, Direction direction = EVEN);
   ~RandomIntervalGenerator(){}
   virtual double