wait* methods refactored