feat(binding): split hooks to individual classes, make a hook manager
feat(client): add user action detector