everything except generic is done