@Override
	public E remove(int i) throws IndexOutOfBoundsException {
		if (i < 0 || i > (size - 1))
			throw new IndexOutOfBoundsException();
		size--;
		E removed = elements[getIndex(i)];
		if (i == index_of_first)
			index_of_first++;
		else {
			for (int index = i; index < size; index++) {
				elements[getIndex(index)] = elements[getIndex(index) + 1];
			}
		}

		return removed;
	}