nit: data.end