private void addAllTranslators() {
        Reflections reflections = new Reflections("com.cortex.translators");
        Set<Class<? extends Translator>> subTypesOf = reflections.getSubTypesOf(Translator.class);

        for (Class<? extends Translator> translatorClass : subTypesOf) {

            try {
                Type[] genericInterfaces = translatorClass.getGenericInterfaces();

                ParameterizedType t = (ParameterizedType) genericInterfaces[0];

                Type[] actualTypeArguments = t.getActualTypeArguments();
                Class genericParameter = (Class) actualTypeArguments[0];
                Translator instance = translatorClass.newInstance();

                translators.put(genericParameter, instance);

            } catch (Exception ex) {
                java.util.logging.Logger.getLogger(Cortex.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

    }