New waiter implementation. Moved to public