hiding document impl
really cleaned up