Use NSOperation for better handling.