public static Card loadCard(final InputStream cardStream) throws IOException {
		Card card;
		BufferedReader reader = new BufferedReader(new InputStreamReader(cardStream));
		ArrayList<String> lines = readAllLines(reader);
		switch (findCardType(lines)) {
			case "Character": card = new Chara();
			break;
			case "Climax": card = new Climax();
			break;
			case "Event": card = new Event();
			break;	
			default: card = new Chara();
		}
		
		card.setName(lines.get(0).substring(5));
		card.setJpnName(lines.get(1).substring(9));
		card.setNumber(lines.get(2).substring(7));
		card.setRarity(lines.get(3).substring(7));
		card.setColor(new CColor(lines.get(4).substring(6)));
		card.setTrigger(new Trigger(lines.get(13).substring(9).split("\\s+")));
		card.setFlavor(lines.get(14).substring(7));
		card.setText(lines.get(15).substring(5).split("\\*")); //because i put a little star in between abilities
		card.setImagePath(lines.get(16).substring(6));
		card.setPack(lines.get(17).substring(5));
		
		if (card instanceof LevelCard) {
		((LevelCard) card).setLevel(Integer.parseInt(lines.get(7).substring(6)));
		((LevelCard) card).setCost(Integer.parseInt(lines.get(8).substring(5)));
		((LevelCard) card).setAttributes();
		}
		
		if (card instanceof Event)
			return (Event) card;
		
		if (card instanceof Chara) {
		((Chara) card).setPower(Integer.parseInt(lines.get(9).substring(6)));
		((Chara) card).setSoul(Integer.parseInt(lines.get(10).substring(5)));
		((Chara) card).getTrait().setTrait(0, lines.get(11).substring(7));
		((Chara) card).getTrait().setTrait(1, lines.get(12).substring(7));
		return (Chara) card;
		}
		
		return (Climax) card;
	}