prototype array implementation