make generic and stuff
merge and clean