DOM abstraction