diff --git a/test/test-event-scheduler.cc b/test/test-event-scheduler.cc
index 950a69e..4642d95 100644
--- a/test/test-event-scheduler.cc
+++ b/test/test-event-scheduler.cc
@@ -42,33 +42,29 @@
   string tag2 = "world";
   string tag3 = "period";
 
-  TaskPtr task1(new Task(boost::bind(func, tag1), tag1, scheduler));
-  TaskPtr task2(new Task(boost::bind(func, tag2), tag2, scheduler));
-  TaskPtr task3(new Task(boost::bind(func, tag3), tag3, scheduler, generator));
+  TaskPtr task1(new OneTimeTask(boost::bind(func, tag1), tag1, scheduler, 0.5));
+  TaskPtr task2(new OneTimeTask(boost::bind(func, tag2), tag2, scheduler, 0.5));
+  TaskPtr task3(new PeriodicTask(boost::bind(func, tag3), tag3, scheduler, generator));
 
   scheduler->start();
-  scheduler->addTask(task1, 0.5);
-  scheduler->addTask(task2, 0.5);
+  scheduler->addTask(task1);
+  scheduler->addTask(task2);
   scheduler->addTask(task3);
   BOOST_CHECK_EQUAL(scheduler->size(), 3);
   usleep(600000);
   BOOST_CHECK_EQUAL(scheduler->size(), 1);
-  task1->reset();
-  scheduler->addTask(task1, 0.5);
+  scheduler->addTask(task1);
   BOOST_CHECK_EQUAL(scheduler->size(), 2);
   usleep(600000);
-  task1->reset();
-  scheduler->addTask(task1, 0.5);
+  scheduler->addTask(task1);
   BOOST_CHECK_EQUAL(scheduler->size(), 2);
   usleep(400000);
   scheduler->deleteTask(task1->tag());
   BOOST_CHECK_EQUAL(scheduler->size(), 1);
   usleep(200000);
 
-  task1->reset();
-  task2->reset();
-  scheduler->addTask(task1, 0.5);
-  scheduler->addTask(task2, 0.5);
+  scheduler->addTask(task1);
+  scheduler->addTask(task2);
   BOOST_CHECK_EQUAL(scheduler->size(), 3);
   usleep(100000);
   scheduler->deleteTask(bind(matcher, _1));
