An important result in the study of polynomial-time preprocessing shows that there is an algorithm which given an instance (G, k) of VERTEX COVER outputs an equivalent instance (G , k ) in polynomial time with the guarantee that G has at most 2k vertices (and thus O((k ) 2 ) edges) with k ≤ k. Using the terminology of parameterized complexity we say that k-VERTEX COVER has a kernel with 2k vertices. There is complexity-theoretic evidence that both 2k vertices and (k 2 ) edges are optimal for the kernel size. In this paper we consider the VERTEX COVER problem with a different parameter, the size FVS(G) of a minimum feedback vertex set for G. This refined parameter is structurally smaller than the parameter k associated to the vertex covering number VC(G) since FVS(G) ≤ VC(G) and the difference can be arbitrarily large. We give a kernel for VERTEX COVER with a number of vertices that is cubic in FVS(G): an instance (G, X, k) of VERTEX COVER, where X is a feedback vertex set for G, can be transformed in polynomial time into an equivalent instanceA similar result holds when the feedback vertex set X is not given along with the input. In sharp contrast we show that the WEIGHTED VERTEX COVER problem does not have a polynomial kernel when parameterized by the cardinality of a given vertex cover of the graph unless NP ⊆ coNP/poly and the polynomial hierarchy collapses to the third level.