@Override
	public void insert(Card data) {
		Node<Card> currNode;
		Node<Card> prevNode;
		Node<Card> aNode = new Node<Card>(data);

		if (head == null) {
			head = aNode;
			head.setData(data);

		} else {
			currNode = head;
			prevNode = head;
			// loop till you find the right place
			while (currNode != null && data.compareTo(currNode.getData()) >= 0) {
				if (data.compareTo(currNode.getData()) == 0) {
					// Since we allow for duplicates, if they are equal then we
					// will
					// simply break out of the loop and put it before the
					// currNode.
					break;
				} else {

					// parse further along in the list to find the right
					// position
					prevNode = currNode;
					currNode = currNode.getNext();
				}
			}// end while

			// data belongs right here
			if (currNode == head) {
				// data belongs before current head
				aNode.setNext(head);
				head = aNode;

			} else if (currNode == null) {
				// data belongs after last node
				prevNode.setNext(aNode);
			} else {
				// belongs between two nodes
				aNode.setNext(currNode);
				prevNode.setNext(aNode);

			}

		}
	}