complete modify and alloc