send/recv methods should be `&mut self`