the name `handleResponse` is maybe confusing, `handleMessage`?
Does it have to be public?