Semi-async solution