public GameMatter getItem(Face face){
		if (corruptedTemplate){
			//template is bad/incomplete, return null.
			return null;
		}

		//===start generating dimensions & value===
		int value, scale, x, y = 0;
		double r = random.nextDouble();
		value = (int) (valueMin + (valueRange * r));
		scale = (int) (sizeMin + (sizeRange * r));

		//get x and y
		if (face == Face.CEILING || face == Face.FLOOR){
			x = random.nextInt(100 - scale + 1) + (scale / 2) - 1;
			y = random.nextInt(100 - scale + 1) + (scale / 2) - 1;
		} else {
			x = random.nextInt(100 - scale + 1) + (scale / 2) - 1;
			y = random.nextInt(yRange + 1) + yMin - 1;
		}

		Dimensions position = new Dimensions(x, y, scale);

		//return the appropriate GameMatter depending on the object type
		if (type.equals("sell")){
			return new Sellable(name, description, image, face, position, value);
		} else if (type.equals("static")){
			return new FurnitureStatic(name, description, image, face, position);
		} else if (type.equals("key")){
			return new Key(name, description, image, position);
		} else if (type.equals("knife")){
			return new Knife(name, description, image, face, position);
		} else {
			return null;
		}
	}