public ShipLayout getShipLayout(String id) {
		ShipLayout result = shipLayouts.get(id);

		if ( result == null ) {  // Wasn't cached; try parsing it.
			InputStream in = null;
			try {
				in = getDataInputStream("data/"+ id +".txt");
				result = dataParser.readLayout(in);
				shipLayouts.put( id, result );

			} catch (FileNotFoundException e) {
				log.error( "No ShipLayout found for id: "+ id );

			} catch (IOException e) {
				log.error( "An error occurred while parsing ShipLayout: "+ id, e );

			} finally {
				try {if (in != null) in.close();}
				catch (IOException f) {}
			}
		}

		return result;
	}