interface mostly added for gradient feature