public static Vector extendFeatures(Vector features) {
		double[] extendedFeatures = new double[30];
		int index = 0;

		// copy old features
		double[] oldFeatures = features.getValues();
		for (double feature : oldFeatures) {
			extendedFeatures[index++] = feature;
		}

		// add squared value of features 0-7 and 9-12
		for (int j = 0; j <= 7; j++)
			extendedFeatures[index++] = oldFeatures[j] * oldFeatures[j];
		for (int j = 9; j <= 12; j++)
			extendedFeatures[index++] = oldFeatures[j] * oldFeatures[j];

		// add some further featuers
		extendedFeatures[index++] = (1 - oldFeatures[9]) * oldFeatures[10]; // edible ghosts
		extendedFeatures[index++] = oldFeatures[0] - oldFeatures[2]; // safe path length after junction
		extendedFeatures[index++] = oldFeatures[11] - oldFeatures[2]; // danger value
		extendedFeatures[index++] = oldFeatures[11] - oldFeatures[6]; // distance difference ghost powerPill

		return new Vector(extendedFeatures);
	}