@Override
	public void drop(DropTargetDropEvent dtde) {
		System.out.println("DROPHANDLER: drop");
		System.out.println("original: "+Main.orig);
		CardHolder c_original = null ;
		boolean success = false;
		Component destination = null;
		if (dtde.isDataFlavorSupported(PanelDataFlavor.SHARED_INSTANCE)) {
			Transferable transferable = dtde.getTransferable();
			try {
				Object data = transferable.getTransferData(PanelDataFlavor.SHARED_INSTANCE);
				if (data instanceof Card) {
					Card card = (Card) data;
					Container original = Main.orig;
					//		Main.ch = null;		TODO:
					DropTargetContext dtc = dtde.getDropTargetContext();
					//		System.out.println("sth: "+Main.getSelectedCard().getParent());
					destination = dtc.getComponent();
					if (destination instanceof JComponent) {

						System.out.println("dest: "+destination+" orig: "+original);
						if(destination instanceof CardHolder && original instanceof CardHolder){	//This, by default, should be true
							System.out.println("DEST/ORIG is instanceof CardHolder");
							CardHolder c_destination = (CardHolder)destination;
							c_original = (CardHolder)original;
					//		if(true){
							if(dropCondition(c_original, c_destination, card)){
								//TODO: CHECK CARD TYPE AND SPELL CODE
								/*
								if(original instanceof CardHolder){			// Cardholer to cardholder
									c_original.removeCard();
								}else if(original instanceof Container){	// container to cardholder
									original.remove(card);
								}
								 */
								c_destination.addCard(card,dtde.getLocation(),c_original);
								card.addListeners();
				//				c_original.remove(card);
								success = true;
								dtde.acceptDrop(DnDConstants.ACTION_MOVE);
								c_destination.revalidate();
								c_destination.repaint();
								card.invalidate();
								card.repaint();
								c_original.revalidate();
								c_original.repaint();
							}else{		//destination cardholder is not empty
								success = false;
								dtde.rejectDrop();
							}
							//				((JComponent)destination).add(card);				
						}else{
							success = false;
							dtde.rejectDrop();
						}

					} else {
						success = false;
						dtde.rejectDrop();
					}
				} else {
					success = false;
					dtde.rejectDrop();
				}

			} catch (Exception exp) {
				success = false;
				dtde.rejectDrop();
				exp.printStackTrace();
			}
		} else {
			success = false;
			dtde.rejectDrop();
		}

		JPanel panel = (JPanel) destination;
		//System.out.println(panel.getComponent(0).getSize());
		System.out.println("DROP: "+success);
	//	c_original.revalidate();
	//	c_original.repaint();
		dtde.dropComplete(success);
	}