closes #2, #3: iter_contacts() and iter_devices() for lazy iteration