add more code including Array2D