public boolean register(IPluggable object) {
		this.log.debug("register", "Registering new Plug '"+object.getName()+"'...", 0);
		try {
			Method[] methods = Class.forName(object.getClass().getName()).getMethods();
			for(Method method : methods) {
				Execute exe = method.getAnnotation(Execute.class);
				if(exe == null) continue;
				else if(exe.executable()) {
					PlugMode mode = PlugMode.getByName(method.getName());
					if(mode == null) continue;

					Priority priority = object.getPriority();
					PriorityOverride override = method.getAnnotation(PriorityOverride.class);
					if(override != null) priority = override.priority();
					this.log.debug("register", "Registering PlugMode '"+mode.name +"' with "+priority.name()+" Priority", 1);

					//Tear apart the Map and set the Pair
					TreeMap<PlugMode, HashSet<Pair<Method, IPluggable>>> map = this.pluggableMap.get(priority);
					HashSet<Pair<Method, IPluggable>> set = map.get(mode);
					Pair<Method, IPluggable> pair = new Pair<Method, IPluggable>(method, object);

					//Add the IPluggable to the enabledPlugs HashSet
					this.enabledPlugs.add(object);

					//Build the Map
					set.add(pair);
					map.put(mode, set);
					this.pluggableMap.put(priority, map);
				}
			}
		} catch(Exception e) {
			this.log.printException(e);
			return false;
		}

		this.log.debug("register", "Plug '"+object.getName()+"' registered sucessfully.", 0);

		return true;
	}