implemented without callback