finished everything except for array reinit