must implement send thread only