avoiding use of callback