chore(hooks): Convert hook logic to classes