touch DOM less times in visibility methods
visibility method callback is always async
DRY visibility methods
visibility methods refactoring