Rework inheritance structure, provide some methods to abstract away dom details