public void addComponent(Entity entity, IComponent component, boolean notifyObservers) {
		HashMap<Entity, IComponent> entityComponentMap = registeredComponents.get(component.getClass());
		if (entityComponentMap == null) {
			logger.info("No previous occurence of this component existed before.",
					"Creating new set for it");
			entityComponentMap = new HashMap<Entity, IComponent>();
			registeredComponents.put(component.getClass(), entityComponentMap);
		}

		// Add it to the list of components
		entityComponentMap.put(entity, component);
		// Add it to the list of registered entities
		if (!entityList.contains(entity)) {
			entityList.add(entity);
		}

		/**
		 * We check this boolean for whether or not we should notify our
		 * observers This boolean is set so that we don't waste time constantly
		 * telling every single system to refresh their entityLists when there
		 * are many components being added to one entity.
		 */
		if (notifyObservers) {
			refreshEntityLists();
		}
	}