refactored out WaitableElementProvider
fixed bad test
added integration tests for waitable things