completed except array and main