public ScreenConfig[] getScreenModes() throws ServiceException {

		try {
			DisplayMode desktopMode = Display.getDesktopDisplayMode();
			DisplayMode[] modes = Display.getAvailableDisplayModes();
			ArrayList<ScreenConfig> result = new ArrayList<ScreenConfig>();
			ScreenConfig.Builder builder = new ScreenConfig.Builder();
			builder.cloneDesktop(false);
			builder.fullscreen(this.config.isFullscreen());
			builder.vsync(this.config.isVsync());
			builder.title(this.config.getTitle());
			
			for (DisplayMode mode : modes) {
				if (mode.getFrequency() != desktopMode.getFrequency()) {
					continue;
				}
				if (mode.getBitsPerPixel() != desktopMode.getBitsPerPixel()) {
					continue;
				}

				insertConfig(result, builder.resolution(mode.getWidth(), mode.getHeight()).build());
			}			
			return result.toArray(new ScreenConfig[0]);
			
		} catch (LWJGLException e) {
			throw new ServiceException("unable to query display modes", e);
		}
	}