private void initRenderables() {
		// Init the reflection API
		// Look for classes implementing the Renderable interface
		Set<Class<? extends Renderable>> renderables = new Reflections("net.carmgate.morph").getSubTypesOf(Renderable.class);

		// Iterate over the result set to initialize each renderable
		for (Class<? extends Renderable> renderable : renderables) {
			// if the class is abstract, do not try to instanciate
			if (Modifier.isAbstract(renderable.getModifiers())) {
				// if the initRenderer method is not abstract in this class, log an error
				try {
					if (!Modifier.isAbstract(renderable.getMethod("initRenderer", new Class<?>[] {}).getModifiers())) {
						LOGGER.error("There is a concrete initRenderer method in abstract class "
								+ renderable.getCanonicalName() + ". Check the class as it might be an error.");
					}
				} catch (NoSuchMethodException | SecurityException e) {
					LOGGER.error("Error while retrieveing initRenderer method within " + renderable.getName(), e);
				}
				continue;
			}

			// If the class is not abstract, call the no-arg constructor and then the initRenderer method
			try {
				Constructor<? extends Renderable> constructor = renderable.getConstructor();
				constructor.newInstance().initRenderer();
			} catch (InstantiationException | NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException
					| InvocationTargetException e) {
				LOGGER.error("Exception raised while trying to init renderer " + renderable.getName(), e);
			}

		}
	}