old_contents: class NCounter(object):
      """
      INTERNAL USE. EVALUATION PURPOSE ONLY
      
      This is a callback factory whose callbacks register a tick in this class.
      If these callbacks are executed times times, then callback is called.
      
      callback will be called after the handler generated by call.
      
      Example use:
      
          c = NCounter(2, say_hi)
          execute_at_some_time(c(say_hello))
          execute_at_some_time(c(say_yo))
          
      if both execute_at_some_time fire, say_hi will be called
      """
      def __init__(self, times: int, callback: callable):
          self.times = times
          self.callback_ = callback
          
      def __call__(self, clbck: callable):
          
          def cb(*args, **kwargs):
              self.times -= 1
              
              clbck(*args, **kwargs)
              
              if self.times == 0:
                  self.callback_()
  
          return cb
          
new_contents: class NCounter(object):
      """
      INTERNAL USE. EVALUATION PURPOSE ONLY
      
      This is a callback factory whose callbacks register a tick in this class.
      If these callbacks are executed times times, then callback is called.
      
      callback will be called after the handler generated by call.
      
      Example use:
      
          c = NCounter(2, say_hi)
          execute_at_some_time(c(say_hello))
          execute_at_some_time(c(say_yo))
          
      if both execute_at_some_time fire, say_hi will be called
      """
      def __init__(self, times: int, callback: callable):
          self.times = times
          self.callback_ = callback
          
      def __call__(self, clbck: callable=lambda: None):
          
          def cb(*args, **kwargs):
              self.times -= 1
              
              clbck(*args, **kwargs)
              
              if self.times == 0:
                  self.callback_()
  
          return cb
          
subject: allow default callback in NCounter