Removed doubled semaphore;
Added some virtuals to methods...
Renamed takeAction to OnReceiveCompleted