add waiter and notifier