stop here; allocate explicitly should be investigated in function case