private static String getDatabaseType(Class<? extends Database> clazz) {
		try {
			Method method = clazz.getDeclaredMethod("getDriver");

			if (!Modifier.isStatic(method.getModifiers())) {
				throw new IllegalArgumentException(clazz.getCanonicalName() + " does not have a static getDriver()");
			}

			if (!method.getReturnType().equals(String.class)) {
				throw new IllegalArgumentException(clazz.getCanonicalName() + "'s getDriver() does not return a String");
			}

			return (String) method.invoke(null);
		} catch (NoSuchMethodException e) {
			throw new IllegalArgumentException(clazz.getCanonicalName() + " does not have getDriver()", e);
		} catch (InvocationTargetException e) {
			throw new IllegalArgumentException("There was an exception when registering '" + clazz.getCanonicalName() + "' with the DatabaseFactory", e);
		} catch (IllegalAccessException e) {
			throw new IllegalArgumentException("There was an exception when registering '" + clazz.getCanonicalName() + "' with the DatabaseFactory", e);
		}
	}