- removed some shared_ptr
- removed typedef
- keep listening after receiving message