'Schedule a new task.
:param string name: The name of the task.
:param int seconds: The number of seconds to wait before executing.
:param callback: The function to execute.
:param tuple args: The arguments to pass to the callback.
:param dict kwargs: The keyword arguments to pass to the callback.
:param bool repeat: Indicates if the task should repeat.
Defaults to ``False``.
:param pointer: A pointer to an event queue for queuing callback
execution instead of executing immediately.'

def add(self, name, seconds, callback, args=None, kwargs=None, repeat=False, qpointer=None):

    try:
        self.schedule_lock.acquire()
        for task in self.schedule:
            if (task.name == name):
                raise ValueError(('Key    %s    already    exists' % name))
        self.addq.put(Task(name, seconds, callback, args, kwargs, repeat, qpointer))
    except:
        raise
    finally:
        self.schedule_lock.release()
