@Override
	public <T extends AggregateRoot<?>> T loadOneBy(Class<T> type,
			Specification<T> specification) {
        T satisfied = null;
        
        for (final Object aggregate : aggregates.values()) {
        	
        	if (aggregate.getClass().isAssignableFrom(type)) {
	            if (specification.isSatisfiedBy((T) aggregate)) {
	                if (satisfied == null) {
	                    satisfied = (T) aggregate;
	                } else {
	                    throw new UnexpectedResultatSizeException("More then one " +
	                            "aggregate satisfied by the given specification.");
	                }
	            }
        	}
        }
        
        return satisfied;
	}