better abstraction and document views