private void startService(Service service) throws ServiceException {
		for (int i = 0; i < service.numOfDependencies(); ++i) {
			Service dependency = this.servicesMap.get(service.getDependency(i));
			if (dependency == null) {
				throw new RuntimeException("unresolved dependency: " + service.getDependency(i));
			}
			if (dependency.getStatus() != Service.Status.STARTED) {
				startService(dependency);
			}
		}
		
		service.start(this);
	}