async functionality implemented