public void load() {
		ResultSet res = null;
		try {
			res = db.selectQuery("SELECT * FROM servers ", new Object[0]);
			Server s;
			while (res.next()) {
				s = (new Server(this)).bind(res);
				servers.put(s.getId(), s);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			getDb().collect(null, null, res);
		}

		System.out.println("servers: " + servers.size());

		try {
			res = db.selectQuery("SELECT * FROM categories", new Object[0]);
			Category c;
			while (res.next()) {
				c = (new Category(this)).bind(res);
				categories.put(c.getId(), c);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			getDb().collect(null, null, res);
		}

		for (Category cat : categories.values()) {
			Category parent = categories.get(cat.getParentid());
			if (parent == null) {
				continue;
			}
			cat.setParent(parent);
			parent.getChildren().add(cat);
		}

		System.out.println("categories: " + categories.size());

		try {
			res = db.selectQuery("SELECT * FROM servercategories",
					new Object[0]);
			ServerCategory servercategory;
			Server server;
			while (res.next()) {
				server = servers.get(res.getInt("serverid"));
				if (server == null) {
					continue;
				}
				servercategory = new ServerCategory(this, server);
				servercategory.bind(res);
				server.addServerCategory(servercategory);
				servercategory.setCategory(categories.get(servercategory
						.getCategoryid()));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			getDb().collect(null, null, res);
		}
	}