plotting – contour plot with text

Clear("Global`*")

f(x_, y_) = (8/3)*x^3 - 4*x^2 + (1/2)*y^2 + 
      x*y^2*(y^2 - 2);

critPts = 
 Solve({D(f(x, y), x) == 0, D(f(x, y), y) == 0}, {x, y}, Reals) /. 
  r_Root :> N(r)

(* {{x -> 0, y -> 0}, {x -> 1, y -> 0}, {x -> 1.10715, 
  y -> -0.879883}, {x -> 1.10715, y -> 0.879883}} *)

max = Select(
  critPts, (D(f(x, y), {x, 2}) /. #) < 
     0 &&
    (D(f(x, y), {y, 2}) /. #) < 0 &)

(* {} *)

min = Select(
  critPts, (D(f(x, y), {x, 2}) /. #) > 
     0 &&
    (D(f(x, y), {y, 2}) /. #) > 0 &)

(* {{x -> 1.10715, y -> -0.879883}, {x -> 1.10715, y -> 0.879883}} *)

saddle = Complement(critPts, max, min)

(* {{x -> 0, y -> 0}, {x -> 1, y -> 0}} *)

ContourPlot(f(x, y), 
   {x, -0.5, 2}, {y, -2, 2},
 Contours -> 12,
 PlotPoints -> 50,
 MaxRecursion -> 2,
 Epilog -> {AbsolutePointSize(4),
   Red, Point({x, y} /. min),
   Text("Potential well", {1.72, -1.9}),
   Arrow({{1.72, -1.83}, #}) & /@ ({x, y} /. min),
   Darker(Green), Point({x, y} /. saddle),
   Text("Saddle points", {1.72, 1.9}),
   Arrow({{1.72, 1.83}, #}) & /@ ({x, y} /. saddle)})

enter image description here