public Card returnAndRemove(Card data) throws Exception {
		Node<Card> currNode;
		Node<Card> prevNode;
		Card returnCard = null;
		if (head == null) {
			throw new ListEmptyException();
		} else {
			// find the node with the data in it
			// adjust the links so the Node is removed from the chain of Nodes
			currNode = head;
			prevNode = head;
			while (currNode != null && data.compareTo(currNode.getData()) >= 0) {
				if (currNode.getData().equals(data)) {
					// found the data we are looking for
					returnCard = currNode.getData();
					if (currNode == head) {
						// reset head and you're done!
						head = head.getNext();
						return returnCard; // leave the method

					} else { // node was found in the middle of the list
						prevNode.setNext(currNode.getNext());
						return returnCard; // leave the method

					}
				}
				// didn't find it yet, continue on to next node
				prevNode = currNode;
				currNode = currNode.getNext();
			}
			// exhausted list, didn't find a match
			throw new NotFoundException();
		}
	}