add comments and use generics on waiter methods
add elementHelper class implementation