exists should be less expensive than getData here