Use threading.Timer() instead of signals.
Clean up darcs branch a bit.