def add(args={}, &block)
      Thread.exclusive do
        @items[block] = {
          :remaining => args[:period].to_f, 
          :reset => args[:once] ? 0 : args[:period].to_f
        }
      end
      retime
      block
    end
def add(args={}, &block)
      Thread.exclusive do
        @items[block] = {
          :remaining => args[:period].to_f, 
          :reset => args[:once] ? 0 : args[:period].to_f
        }
      end
      retime
      block
    end
args:: Argument Hash
   :report_thread => Thread to send exceptions to (defaults to current)
 args:: Argument hash
   :period => seconds to wait
   :once => only run once
 block:: block to execute when wait is complete
 Add new item to timer