diff --git a/GAMS/IntExtOpt.gms b/GAMS/IntExtOpt.gms
index eef44d50a59999fe31b4a9dfd250485f91ecaba8..a825c564d0ffa286416585fa85cb2deaa09ac4fc 100644
--- a/GAMS/IntExtOpt.gms
+++ b/GAMS/IntExtOpt.gms
@@ -62,14 +62,20 @@ $gdxin
               starchyRoots  0.21
               pasture       1    / ; 
    
- PARAMETER baseCost(crop)  cost per ha before intensity values not including fertiliser or irrigation i.e. seed spray and other.  In 1000 $ per ha
+ PARAMETER prodCost(crop)  cost per ha before intensity values not including fertiliser or irrigation i.e. seed spray and other.  In 1000 $ per ha
           /   wheat             0.32   
               maize             0.26 
               rice              0.4
               oilcrops          0.24
               pulses            0.31
-              starchyRoots      4.64
-              pasture           0.1  / ; 
+              starchyRoots      4.64 / ;
+
+ PARAMETER baseCost(crop);
+ PARAMETER otherIntCost(crop);
+ baseCost(crop) = prodCost(crop)/2;
+ otherIntCost(crop) = baseCost(crop)/2 + otherICost;
+ baseCost('pasture') = 0.01;
+ otherIntCost('pasture') = 0.8 + otherICost;
                               
  VARIABLES
        area(crop, location)               total area for each crop - Mha
@@ -122,10 +128,10 @@ $gdxin
        PASTURE_TOTAL_CHANGE_CONSTRAINT(location)   
        COST_EQ                                        total cost objective function;
  
- UNIT_COST_EQ(crop, location) .. unitCost(crop, location) =E=  (     baseCost(crop) * 0.5 +           
+ UNIT_COST_EQ(crop, location) .. unitCost(crop, location) =E=  (     baseCost(crop) +           
                                                                      fertiliserUnitCost * fertI(crop, location) + 
                                                                      irrigCost(location) * irrigMaxRate(crop, location) * irrigI(crop, location) +
-                                                                     (baseCost(crop) * 0.5 + otherICost) * otherIntensity(crop, location)
+                                                                     otherIntCost(crop) * otherIntensity(crop, location)
                                                                      ) ;
  
  YIELD_EQ(crop, location) .. yield(crop, location) =E= (
diff --git a/scripts/concatOutputLc.sh b/scripts/concatOutputLc.sh
new file mode 100755
index 0000000000000000000000000000000000000000..a5f151108edaf7977ac34f347b69f73afa1dec66
--- /dev/null
+++ b/scripts/concatOutputLc.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+if [ "$#" -ne 1  ]; then
+   echo "Need to specify scenario output dir"
+   exit
+fi
+
+
+concatLcFile=$1/lc_concat.txt
+concatPriceFile=$1/price_concat.txt
+echo "Scenario,Year,Cropland,Pasture,Forest,Natural,Fert_crop,Fert_pasture,Irrig_crop,Irrig_pasture" > $concatLcFile
+echo "Scenario,Year,Crop,Imports,Exports,Price,Stocks" > $concatPriceFile
+
+find . -name "*lc.txt"|while read fname; do
+        scenarioDir="$(dirname $fname)"
+	scenario="$(basename $scenarioDir)"
+	echo "$scenario: $fname"
+
+	i=1
+	while read -r line
+	do
+		test $i -eq 1 && ((i=i+1)) && continue
+		echo "${scenario},$line" >> $concatLcFile
+	done < $fname
+
+	# Should write a function for this, rather than duplicating, but do that later
+	j=1
+	while read -r line
+	do
+		test $j -eq 1 && ((j=j+1)) && continue
+		echo "${scenario},$line" >> $concatPriceFile
+	done < $scenarioDir/prices.txt
+done
diff --git a/src/ac/ed/lurg/ModelConfig.java b/src/ac/ed/lurg/ModelConfig.java
index 5c9ca7d918cc9870a50302094fef7913bcb8faff..955a392ac6a41d1e3199b60c08a3380f951db81f 100644
--- a/src/ac/ed/lurg/ModelConfig.java
+++ b/src/ac/ed/lurg/ModelConfig.java
@@ -115,7 +115,9 @@ public class ModelConfig {
 	public static final String STOCKS_FILE = DATA_DIR + File.separator + "global_stocks.csv";
 	
 	// yield data
-	public static final String YIELD_DIR = getProperty("YIELD_DIR");
+	public static final String YIELD_DIR_BASE = getProperty("YIELD_DIR_BASE");
+	public static final String YIELD_DIR_TOP = getProperty("YIELD_DIR_TOP");
+	public static final String YIELD_DIR = getProperty("YIELD_DIR", YIELD_DIR_BASE + File.separator + YIELD_DIR_TOP);
 	public static final int LPJG_MONITOR_TIMEOUT_SEC = getIntProperty("LPJG_MONITOR_TIMEOUT", 60*60*2);
 	public static final String ANPP_FILENAME = getProperty("ANPP_FILENAME", "anpp.out");
 	public static final String YIELD_FILENAME = getProperty("YIELD_FILENAME", "yield.out");
@@ -176,7 +178,7 @@ public class ModelConfig {
 	public static final double PASTURE_HARVEST_FRACTION = getDoubleProperty("PASTURE_HARVEST_FRACTION", 0.5);
 	public static final double MEAT_EFFICIENCY = getDoubleProperty("MEAT_EFFICIENCY", 1.0);  // 'meat' is includes feed conversion ratio already, this is tech. change or similar
 	public static final double IRRIGIATION_EFFICIENCY = getDoubleProperty("IRRIGIATION_EFFICIENCY", 0.5);
-	public static final double LAND_CHANGE_COST = getDoubleProperty("LAND_CHANGE_COST", 1.0);
+	public static final double LAND_CHANGE_COST = getDoubleProperty("LAND_CHANGE_COST", 0.9);
 	public static final double SEED_AND_WASTE_FRACTION = getDoubleProperty("SEED_AND_WASTE_FRACTION", 0.15);  
 
 	public static final double TECHNOLOGY_CHANGE_ANNUAL_RATE = IS_CALIBRATION_RUN ? 0.0 : getDoubleProperty("TECHNOLOGY_CHANGE_ANNUAL_RATE", 0.0);
@@ -196,7 +198,7 @@ public class ModelConfig {
 	public static final double OTHER_INTENSITY_PARAM = getDoubleProperty("OTHER_INTENSITY_PARAM", 3.22);
 
 	public static final double IRRIG_COST_SCALE_FACTOR = getDoubleProperty("IRRIG_COST_SCALE_FACTOR", 0.03);
-	public static final double FERTILISER_COST_PER_T = getDoubleProperty("FERTILISER_COST_PER_T", 0.3/0.34 * 1.1); // $300/t, 34% N/t plus 10% cost for application 
+	public static final double FERTILISER_COST_PER_T = getDoubleProperty("FERTILISER_COST_PER_T", 0.5/0.18); // $500/t, 18% N/t
 	public static final double FERTILISER_MAX_COST = FERTILISER_COST_PER_T * MAX_FERT_AMOUNT/1000;
 	
 	public static final double DOMESTIC_PRICE_MARKUP = getDoubleProperty("DOMESTIC_PRICE_MARKUP", 2.0);
diff --git a/src/ac/ed/lurg/ModelConfig.java.orig b/src/ac/ed/lurg/ModelConfig.java.orig
deleted file mode 100644
index 4b33bc0015929c6d714c54cd8f69d8b9e82ac9c8..0000000000000000000000000000000000000000
--- a/src/ac/ed/lurg/ModelConfig.java.orig
+++ /dev/null
@@ -1,214 +0,0 @@
-package ac.ed.lurg;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.Enumeration;
-import java.util.Properties;
-
-public class ModelConfig {
-	
-	private Properties configFile;
-	private static ModelConfig modelConfig;
-	public static final String CONFIG_FILE = System.getProperty("CONFIG_FILE");
-	
-	private ModelConfig() {
-		configFile = new Properties();
-		try {
-			System.out.println("Config. file is " + CONFIG_FILE);
-			if (CONFIG_FILE != null)
-				configFile.load(new FileInputStream(CONFIG_FILE));
-		}
-		catch (IOException e) {
-			System.err.println("Problems reading config file");
-			System.err.println(e.getMessage());
-		}
-
-		Enumeration<?> em = configFile.keys();
-		while(em.hasMoreElements()) {
-			String str = (String) em.nextElement();
-			System.out.println(str + ": " + configFile.get(str));
-		}
-	}
-	
-	private static ModelConfig getModelConfig() {
-		if (modelConfig == null)
-			modelConfig = new ModelConfig();
-
-		return modelConfig;
-	}
-	
-	private static String getProperty(String prop) {
-		return getModelConfig().getProp(prop);
-	}
-	private static String getProperty(String prop, String defaultString) {
-		String propValue = getProperty(prop);
-		return propValue == null ? defaultString : propValue;
-	}
-	private String getProp(String prop) {
-		return configFile.getProperty(prop);
-	}
-	
-	private static Integer getIntProperty(String prop, Integer defaultInt) {
-		Integer propValue = getModelConfig().getIntProp(prop);
-		return propValue == null ? defaultInt : propValue;
-	}
-	private Integer getIntProp(String prop) {
-		String v = configFile.getProperty(prop);
-		return v==null ? null : Integer.valueOf(v);
-	}
-	
-	@SuppressWarnings("unused")
-	private static Long getLongProperty(String prop, Long defaultLong) {
-		Long propValue = getModelConfig().getLongProp(prop);
-		return propValue == null ? defaultLong : propValue;
-	}
-	private Long getLongProp(String prop) {
-		String v = configFile.getProperty(prop);
-		return v==null ? null : Long.valueOf(v);
-	}
-	
-	private static Double getDoubleProperty(String prop, Double defaultDouble) {
-		Double propValue = getModelConfig().getDoubleProp(prop);
-		return propValue == null ? defaultDouble : propValue;
-	}
-	private Double getDoubleProp(String prop) {
-		String v = configFile.getProperty(prop);
-		return v==null ? null :  Double.valueOf(v);
-	}
-	
-	private static Boolean getBooleanProperty(String prop, Boolean defaultBoolean) {
-		return getModelConfig().getBooleanProp(prop, defaultBoolean);
-	}
-	private boolean getBooleanProp(String prop, Boolean defaultBoolean) {
-		String v = configFile.getProperty(prop);
-		return v==null ? defaultBoolean :  Boolean.valueOf(v);
-	}
-
-	public static final boolean SUPPRESS_STD_OUTPUT = getBooleanProperty("SUPPRESS_STD_OUTPUT", Boolean.FALSE);
-
-	// Directory information
-	public static final String BASE_DIR = getProperty("BASE_DIR");  // this must to be set in config file
-	public static final String OUTPUT_DIR = getProperty("OUTPUT_DIR", BASE_DIR + File.separator + "output");
-	public static final String TEMP_DIR = getProperty("TEMP_DIR", OUTPUT_DIR + File.separator + "GamsTmp");
-	public static final String DATA_DIR = getProperty("DATA_DIR", BASE_DIR + File.separator + "data");
-	public static final String GAMS_MODEL = getProperty("GAMS_MODEL", BASE_DIR + File.separator + "GAMS/IntExtOpt.gms");
-	public static final boolean CLEANUP_GAMS_DIR = getBooleanProperty("CLEANUP_GAMS_DIR", false);
-
-	// Country (non-gridded) data
-	public static final String DEMAND_CURVES_FILE = DATA_DIR + File.separator + "com_curves.csv";
-	public static final String SSP_FILE = DATA_DIR + File.separator + "ssp.csv";	
-	public static final String BASELINE_CONSUMP_FILE = DATA_DIR + File.separator + "base_consump.csv";
-	public static final String COUNTRY_CODES_FILE = DATA_DIR + File.separator + "country_codes4.csv";
-	public static final String COUNTRY_DATA_FILE = DATA_DIR + File.separator + "country_data.csv";
-	public static final String NET_IMPORTS_FILE = DATA_DIR + File.separator + "net_imports.csv";
-	public static final String BIOENERGY_DEMAND_FILE = DATA_DIR + File.separator + "bio_demand.csv";
-	public static final String TRADE_BARRIERS_FILE = DATA_DIR + File.separator + "tradeBarriers.csv";
-	public static final String STOCKS_FILE = DATA_DIR + File.separator + "global_stocks.csv";
-	
-	// yield data
-	public static final String YIELD_DIR = getProperty("YIELD_DIR");
-	public static final int LPJG_MONITOR_TIMEOUT_SEC = getIntProperty("LPJG_MONITOR_TIMEOUT", 60*60*2);
-	public static final String ANPP_FILENAME = getProperty("ANPP_FILENAME", "anpp.out");
-	public static final String YIELD_FILENAME = getProperty("YIELD_FILENAME", "yield.out");
-	public static final boolean PASTURE_FERT_RESPONSE_FROM_LPJ = getBooleanProperty("PASTURE_FERT_RESPONSE_FROM_LPJ", false);;
-
-	public static final double CALIB_FACTOR_WHEAT = getDoubleProperty("CALIB_FACTOR_WHEAT", 0.976);
-	public static final double CALIB_FACTOR_MAIZE = getDoubleProperty("CALIB_FACTOR_MAIZE", 0.667);
-	public static final double CALIB_FACTOR_RICE = getDoubleProperty("CALIB_FACTOR_RICE", 1.247);
-	public static final double CALIB_FACTOR_OILCROPS = getDoubleProperty("CALIB_FACTOR_OILCROPS", 0.192);
-	public static final double CALIB_FACTOR_PULSES = getDoubleProperty("CALIB_FACTOR_PULSES", 0.583);
-	public static final double CALIB_FACTOR_STARCHY_ROOTS = getDoubleProperty("CALIB_FACTOR_STARCHY_ROOTS", 6.067);
-	
-	// Spatial (gridded) data
-	public static final double CELL_SIZE_X = getDoubleProperty("CELL_SIZE_X", 0.5);
-	public static final double CELL_SIZE_Y = getDoubleProperty("CELL_SIZE_Y", CELL_SIZE_X);
-	public static final String SPATIAL_DIR_NAME = getProperty("SPATIAL_DIR_NAME", "halfdeg");
-	public static final String SPATIAL_DATA_DIR = getProperty("SPATIAL_DATA_DIR", DATA_DIR + File.separator + SPATIAL_DIR_NAME);
-	public static final String INITAL_LAND_COVER_FILE = SPATIAL_DATA_DIR + File.separator + "netfract_hurtt_2000.txt";
-	public static final String COUNTRY_BOUNDARY_FILE = SPATIAL_DATA_DIR + File.separator + "country_boundaries.asc";
-	public static final String IRRIGATION_COST_FILE = SPATIAL_DATA_DIR + File.separator + "irrigation_cost.asc";
-	public static final String IRRIGATION_CONSTRAINT_FILE = SPATIAL_DATA_DIR + File.separator + "blue_water_available_pseudoCRU_rcp8p5_2004_2013_grid_allhdyro_mm.txt";
-	public static final String IRRIG_MAX_WATER_FILENAME = getProperty("IRRIG_MAX_WATER_FILENAME", "gsirrigation.out");
-	public static final String PROTECTED_AREAS_FILE = SPATIAL_DATA_DIR + File.separator + "protected_areas.txt";
-	
-	// Output
-	public static final String LAND_COVER_OUTPUT_FILE = OUTPUT_DIR + File.separator + "lc.txt";
-	public static final String PRICES_OUTPUT_FILE = OUTPUT_DIR + File.separator + "prices.txt";
-	public static final String DEMAND_OUTPUT_FILE = OUTPUT_DIR + File.separator + "demand.txt";
-	public static final boolean OUTPUT_FOR_LPJG = getBooleanProperty("OUTPUT_FOR_LPJG", true);
-	public static final boolean INTERPOLATE_OUTPUT_YEARS = getBooleanProperty("INTERPOLATE_OUTPUT_YEARS", true);
-	
-	// Calibration related stuff
-	public static final boolean IS_CALIBRATION_RUN = getBooleanProperty("IS_CALIBRATION_RUN", false);
-	public static final String SERIALIZED_LAND_USE_FILE = getProperty("SERIALIZED_LAND_USE_FILE", OUTPUT_DIR + File.separator + "landUseRaster.ser");
-	public static final boolean MARKET_ADJ_PRICE = IS_CALIBRATION_RUN ? false : getBooleanProperty("MARKET_ADJ_PRICE", true);
-	public static final boolean CHANGE_YIELD_DATA_YEAR = IS_CALIBRATION_RUN ? false : getBooleanProperty("CHANGE_YIELD_DATA_YEAR", true);
-
-	// Temporal configuration
-	public static final int START_TIMESTEP = getIntProperty("START_TIMESTEP", 0);
-	public static final int END_TIMESTEP = getIntProperty("END_TIMESTEP", 18);
-	public static final int TIMESTEP_SIZE = getIntProperty("TIMESTEP_SIZE", 5);
-	public static final int BASE_YEAR = getIntProperty("BASE_YEAR", 2010);
-
-	// Import export limits
-	public static final double ANNUAL_MAX_IMPORT_CHANGE = IS_CALIBRATION_RUN ? 0.0 : getDoubleProperty("ANNUAL_MAX_IMPORT_CHANGE", 0.02);
-	public static final double MAX_IMPORT_CHANGE = IS_CALIBRATION_RUN ? 0.0 : getDoubleProperty("MAX_IMPORT_CHANGE", ANNUAL_MAX_IMPORT_CHANGE*TIMESTEP_SIZE);
-
-	// Fertiliser application rates in kg/ha
-	public static final double MIN_FERT_AMOUNT = getDoubleProperty("MIN_FERT_AMOUNT", 0.0);
-	public static final double MID_FERT_AMOUNT = getDoubleProperty("MID_FERT_AMOUNT", 200.0);
-	public static final double MAX_FERT_AMOUNT = getDoubleProperty("MAX_FERT_AMOUNT", 1000.0);
-	public static final int FERT_AMOUNT_PADDING = getIntProperty("FERT_AMOUNT_PADDING", 4);;
-
-	// Other model parameters
-	public static final boolean CHANGE_DEMAND_YEAR = IS_CALIBRATION_RUN ? false : getBooleanProperty("CHANGE_DEMAND_YEAR", true);
-	public static final String SSP_SCENARIO = getProperty("SSP_SCENARIO", "SSP1_v9_130325");
-
-	public static final double PASTURE_HARVEST_FRACTION = getDoubleProperty("PASTURE_HARVEST_FRACTION", 0.5);
-	public static final double MEAT_EFFICIENCY = getDoubleProperty("MEAT_EFFICIENCY", 1.0);  // 'meat' is includes feed conversion ratio already, this is tech. change or similar
-	public static final double IRRIGIATION_EFFICIENCY = getDoubleProperty("IRRIGIATION_EFFICIENCY", 0.5);
-	public static final double LAND_CHANGE_COST = getDoubleProperty("LAND_CHANGE_COST", 1.0);
-	public static final double SEED_AND_WASTE_FRACTION = getDoubleProperty("SEED_AND_WASTE_FRACTION", 0.15);  
-
-	public static final double TECHNOLOGY_CHANGE_ANNUAL_RATE = IS_CALIBRATION_RUN ? 0.0 : getDoubleProperty("TECHNOLOGY_CHANGE_ANNUAL_RATE", 0.0);
-	public static final int TECHNOLOGY_CHANGE_START_STEP = getIntProperty("TECHNOLOGY_CHANGE_START_STEP", 0);
-	
-	public static final double BIOENERGY_CHANGE_ANNUAL_RATE = IS_CALIBRATION_RUN ? 0.0 : getDoubleProperty("BIOENERGY_CHANGE_ANNUAL_RATE", 0.0); // 6.2/2.31/20
-	public static final int BIOENERGY_CHANGE_START_YEAR = getIntProperty("BIOENERGY_CHANGE_START_YEAR", 2010);
-	public static final int BIOENERGY_CHANGE_END_YEAR = getIntProperty("BIOENERGY_CHANGE_END_YEAR", 2030);
-
-	public static final double MARKET_LAMBA = getDoubleProperty("MARKET_LAMBA", 0.3); // controls international market price adjustment rate
-
-	public static final double POPULATION_AGGREG_LIMIT = getDoubleProperty("POPULATION_AGGREG_LIMIT", 40.0);  // in millions, smaller countries are aggregated on a regional basis
-	
-	public static final double UNHANDLED_CROP_AREA = getDoubleProperty("UNHANDLED_CROP_AREA", 0.3);  // includes fruit veg forage crops set aside and failed crop
-	
-	public static final double OTHER_INTENSITY_COST = getDoubleProperty("OTHER_INTENSITY_COST", 0.4);
-	public static final double OTHER_INTENSITY_PARAM = getDoubleProperty("OTHER_INTENSITY_PARAM", 3.22);
-
-	public static final double IRRIG_COST_SCALE_FACTOR = getDoubleProperty("IRRIG_COST_SCALE_FACTOR", 0.03);
-	public static final double FERTILISER_COST_PER_T = getDoubleProperty("FERTILISER_COST_PER_T", 0.3/0.34 * 1.1); // $300/t, 34% N/t plus 10% cost for application 
-	public static final double FERTILISER_MAX_COST = FERTILISER_COST_PER_T * MAX_FERT_AMOUNT/1000;
-	
-	public static final double DOMESTIC_PRICE_MARKUP = getDoubleProperty("DOMESTIC_PRICE_MARKUP", 2.0);
-	public static final double TRANSPORT_LOSSES = getDoubleProperty("TRANSPORT_LOSSES", 0.05);  // in international trade
-<<<<<<< local
-	public static final double TRADE_BARRIER_FACTOR_DEFAULT = getDoubleProperty("TRADE_BARRIER_FACTOR_DEFAULT", 0.2);  // price factor in international trade, transport cost and real trade barriers
-	public static final double TRADE_BARRIER_ADJ = getDoubleProperty("TRADE_BARRIER_ADJ", 1.0); //to scale barriers according to SSP's 
-=======
-	public static final double TRANSPORT_COST = getDoubleProperty("TRANSPORT_COST", 0.1);  // 100 $/t  see Wheat Transportation Profile - USDA
-	public static final double TRADE_BARRIER_FACTOR_DEFAULT = getDoubleProperty("TRADE_BARRIER_FACTOR_DEFAULT", 0.4);  // price factor in international trade, transport cost and real trade barriers
->>>>>>> other
-	public static final boolean ACTIVE_TRADE_BARRIERS = getBooleanProperty("ACTIVE_TRADE_BARRIERS", false);  // if set to true read in barrier information from file, otherwise use default as above
-
-	public static final boolean PROTECTED_AREAS_ENABLED = getBooleanProperty("PROTECTED_AREAS_ENABLED", true);
-
-	public static final int NUM_CEREAL_CATEGORIES = getIntProperty("NUM_CEREAL_CATEGORIES", 15);
-	public static final int NUM_PASTURE_CATEGORIES = getIntProperty("NUM_PASTURE_CATEGORIES", 4);
-
-	public static final boolean DEBUG_LIMIT_COUNTRIES = getBooleanProperty("DEBUG_LIMIT_COUNTRIES", false);
-	public static final String DEBUG_COUNTRY_NAME = getProperty("DEBUG_COUNTRY_NAME", "United States of America");
-	public static final double PASTURE_MAX_IRRIGATION_RATE = getDoubleProperty("DEFAULT_MAX_IRRIGATION_RATE", 50.0); // shouldn't need this but some areas crops don't have a value, but was causing them to be selected
-	public static final int LPJG_TIMESTEP_SIZE = 5;
-}