public void insert(ListNode node, int index) {
		ListNode currentNode = root;
		ListNode beforeNode = root;

		int currentIndex = 0;

		if (!isEmpty() && index >= 0 && index <= size()) {
			// iterate to index
			while (currentNode != null && currentIndex != index) {
				beforeNode = currentNode;
				currentNode = currentNode.next;
				currentIndex++;
			}

			// insert
			if (index == 0) {
				root = node;
				node.next = currentNode;
			} else {
				beforeNode.next = node;
				node.next = currentNode;
			}
		}
	}