public void loadObjects() {
		File levelFile = load(levelName);
		
		try {
			DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
			DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
			Document doc = dBuilder.parse(levelFile);
			doc.getDocumentElement().normalize();
			NodeList nodes = doc.getElementsByTagName("rect");

			for (int i = 0; i < nodes.getLength(); i++) {
				Node node = nodes.item(i);

				if (node.getNodeType() == Node.ELEMENT_NODE) {
					NamedNodeMap attrs = node.getAttributes();
					
					float x = Float.parseFloat(attrs.getNamedItem("x").getNodeValue());
					float y = Float.parseFloat(attrs.getNamedItem("y").getNodeValue());
					
					float w = Float.parseFloat(attrs.getNamedItem("width").getNodeValue());
					float h = Float.parseFloat(attrs.getNamedItem("height").getNodeValue());
					
					String color = extractElement("fill", attrs.getNamedItem("style").getNodeValue()).substring(1);
					
					try {
						Class<?> cl = ColorList.getClassForColor(color);
						Constructor<?> cons = cl.getConstructor(Model.class, Vector.class, Vector.class);

						PhysicsObject po = (PhysicsObject) cons.newInstance(model, 
								new Vector(x + w / 2, y + h / 2).scale(GameState.LEVEL_SCALE * 2),
								new Vector(w, h).scale(GameState.LEVEL_SCALE));

						if (po instanceof Player) {
							model.setPlayer((Player) po);
						}

						model.add(po);
					} catch(IllegalArgumentException e) {
						GameState.LOGGER.log(Level.WARNING, "No object found for color: #" + color);
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}