    class Scheduler(Thread):

        ## Init ##
        def __init__(self, daemon=1):

        ## Event Methods ##
        def wait(self, seconds=None):

        ## Attributes ##
        def runningTasks(self):
        def running(self, name, default=None):
        def hasRunning(self, name):
        def setRunning(self, handle):
        def delRunning(self, name):
        def scheduledTasks(self):
        def scheduled(self, name, default=None):
        def hasScheduled(self, name):
        def setScheduled(self, handle):
        def delScheduled(self, name):
        def onDemandTasks(self):
        def onDemand(self, name, default=None):
        def hasOnDemand(self, name):
        def setOnDemand(self, handle):
        def delOnDemand(self, name):
        def nextTime(self):
        def setNextTime(self, time):
        def isRunning(self):

        ## Adding Tasks ##
        def addTimedAction(self, time, task, name):
        def addActionOnDemand(self, task, name):
        def addDailyAction(self, hour, minute, task, name):
        def addPeriodicAction(self, start, period, task, name):

        ## Task methods ##
        def unregisterTask(self, name):
        def runTaskNow(self, name):
        def demandTask(self, name):
        def stopTask(self, name):
        def stopAllTasks(self):
        def disableTask(self, name):
        def enableTask(self, name):
        def runTask(self, handle):
        def scheduleTask(self, handle):

        ## Misc Methods ##
        def notifyCompletion(self, handle):
        def notify(self):
        def stop(self):

        ## Main Method ##
        def run(self):