public boolean addAtIndex (T e, int index) {
		
		if (index < 0 || index >= this.size) throw new IndexOutOfBoundsException();
		
		//	add at index 0
		if (index == 0) return this.addFirst(e);
		
		//	add at the last index
		else if (index == this.size - 1) return this.addLast(e);
		
		//	add at an index that is neither first nor last
		else {
			
			MyNode current = this.head;
			
			//	iterate until we have the node that is one before our target index
			for (int i = 0; i < index - 1; i++) current = current.next;
			
			//	move the pointers
			MyNode nodeToAdd = new MyNode (e, current, current.next);
			current.next = nodeToAdd;
			
			//	increment the size
			this.size++;
			
			return true;
			
		}
	}