made _wakeup() more efficient