@SuppressWarnings("rawtypes")
	/**
	 * Retrieve class names implementing the given interface existing somewhere in the basePackage 
	 */
	public static List<String> getClassNamesImplementingInterface(Class interf, String basePackage) {
		List<String> classNames = new ArrayList<String>();
		try {
			Class[] result = getClasses(basePackage);
			for (Class c : result) {
				if (!Modifier.isAbstract(c.getModifiers())) {
					for (Class implementingInterface : c.getInterfaces()) {
						if (implementingInterface.getName().equals(interf.getName())) {
							classNames.add(c.getCanonicalName());
						}
					}
				}
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		return classNames;
	}