refactoring, implement battery listeners