other funcs should change the entire structure