private boolean setCategory(int index) {
		final String currentCategory = getCategory();
		final String[] categorys = getCategorys();

		if (categorys.length > index) {
			final String target = categorys[index];
			if (currentCategory.equalsIgnoreCase(target)) {
				return true;
			}

			Component child = ctx.widgets.component(WIDGET_INTERFACE_MAIN, WIDGET_INTERFACE_CATEGORY).component(0);
			if (child.valid() && child.click(true)) {
				if (Condition.wait(new Callable<Boolean>() {
					@Override
					public Boolean call() throws Exception {
						return getCategoryRectangle(ctx, target) != null;
					}
				})) {
					ctx.sleep(400);
					Component component = getCategoryRectangle(ctx, target);
					if (component != null && component.interact("Select")) {
						Condition.wait(new Callable<Boolean>() {
							@Override
							public Boolean call() throws Exception {
								return !currentCategory.equalsIgnoreCase(getCategory());
							}
						}, 200, 10);
						ctx.sleep(400);
					}
				}
			}

			return getCategory().equalsIgnoreCase(target);
		}


		// Assume true for only one category
		return true;
	}