public EditorController getLevel(File file)
			throws LevelMisconfigurationException {
		// loads just the level itself from the xml
		Level level = XmlService.getInstance().getLevelFromFile(file);
		EditorController controller = new EditorController();
		int col = XmlService.getInstance().getMaxColumnCount(level.getRow());
		int row = level.getRow().size();

		Board board = new Board(col, row);

		LevelEditorView editorView = new LevelEditorView(col, row);
		controller.setView(editorView);
		controller.setModel(board);

		/**
		 * initialize all fields with the correct field type
		 */
		for (Row rowType : level.getRow()) {
			for (Column columnType : rowType.getColumn()) {
				Field field = new Field(FieldState.parseXmlFieldType(columnType
						.getType()));

				board.setField(columnType.getId(), rowType.getId(), field);

				/**
				 * Controller fields for drag and drop
				 */
				FieldController fieldController = new FieldController();
				DraggableElementDestination elementDestination = new DraggableElementDestination(
						fieldController, field.getState());

				fieldController.setView(elementDestination);
				fieldController.setModel(field);

				editorView.addElement(elementDestination);
			}
		}

		board.setLevelName(level.getName());
		board.setUuid(level.getUuid());
		return controller;
	}