improve hooks