use return instead of yield for passing o-routine result back