We could. But it is useful to share that lock with the subclass so it can use it to lock other members (as mentioned in the comment).  The InteractionHandler (which inherits from this class) uses state_lock_ to protect several of its members.  If InteractionHandler needed its own separate mutex for that it would just mean we have to lock 2 mutexes many places where it is used.

One option is to make state_lock_ private and have a protected member function that grants access to it
```
    boost::mutex getStateLock() const { return state_lock_; }
```
but this seems gratuitous.  It does not really add any protection.