private CatalogItem getCatalogItem(String org, String catalog, String item, String type) {
		this.vccPreCheck();

		Formatter.printInfoLine("Retrieving catalog: " + catalog);

		Catalog cat = null;
		try {
			Organization orgObj = this.getOrganization(org);

			for (ReferenceType catalogRef : orgObj.getCatalogRefs()) {
				if (catalogRef.getName().equals(catalog)) {
					cat = Catalog.getCatalogByReference(this.vcc, catalogRef);
				}
			}
		} catch (VCloudException e) {
			Formatter.printErrorLine("An error occured while retrieving Catalog");
			Formatter.printErrorLine(e.getLocalizedMessage());
			System.exit(1);
		}

		if (cat == null) {
			Formatter.printErrorLine("Catalog not found");
			System.exit(1);
		}

		Formatter.printInfoLine("Retrieving catalog item: " + item);

		CatalogItem itemObj = null;
		try {
			itemObj = CatalogItem.getCatalogItemByReference(this.vcc, cat.getCatalogItemRefByName(item));

			if (!itemObj.getEntityReference().getType().equals(type)) {
				Formatter.printErrorLine("Catalog item was found, but was not of the requested type");
				System.exit(1);
			}
		} catch (VCloudException e) {
			Formatter.printErrorLine("An error occured while retrieving vApp");
			Formatter.printErrorLine(e.getLocalizedMessage());
			System.exit(1);
		} catch (NullPointerException ne) {
			Formatter.printErrorLine("Catalog item not found");
			System.exit(1);
		}

		return itemObj;
	}