public Node addNode(Node node) {
//		this.nodes.add(node);
		// CHANGED from this.getNode(0).getNode(0) TO this
		// if current node has children
		if (this.getNodes().size() != 0) {
			node.parent = this.getNode(0).getNode(0);
			node.index = node.getParent().getNodes().size();
		}
		else{
			node.index = 0;
		}
		if (node.getClass() == Cube.class || node.getClass() == Pyramide.class) {
			if (node.index == 0){
				Node plane = new Node("Plane");
				Node tasks = new Node("Tasks");
				plane.index = 0;
				plane.parent = this;
				tasks.index = 0;
				tasks.parent = plane;
				node.parent = tasks;
				int depth = 0;
				Node check = node.getParent();
				while (check.getName() != "Scene") {
					check = check.getParent();
					depth++;
				}
				depth = depth - 2;
				if (depth > 0) {
					plane.setTransformation(vecmath.translationMatrix(0f, 0f, -1f * depth));
				}
				tasks.nodes.add(node);
				plane.nodes.add(tasks);
				this.nodes.add(plane);
			}
			else {
				this.getNode(0).getNode(0).simpleAdd(node);
				node.previous = node.getParent().getNodes().get(node.index - 1);
				node.setTransformation(node.previous.getTransformation().mult(vecmath.translationMatrix(1.5f, 0, 0)));
				int columns = node.index / 5;
				if (columns > 0) {
					node.setTransformation(vecmath.translationMatrix(0, -(float) columns * 1.5f, 0));
				}
			}
		}
		else{
			this.nodes.add(node);
		}
		return node;
	}