diff --git a/plugins/org.eclipse.acceleo.aql.ls/src/org/eclipse/acceleo/aql/ls/services/textdocument/AcceleoLocationLinkResolver.java b/plugins/org.eclipse.acceleo.aql.ls/src/org/eclipse/acceleo/aql/ls/services/textdocument/AcceleoLocationLinkResolver.java
index a32f651..7630b72 100644
--- a/plugins/org.eclipse.acceleo.aql.ls/src/org/eclipse/acceleo/aql/ls/services/textdocument/AcceleoLocationLinkResolver.java
+++ b/plugins/org.eclipse.acceleo.aql.ls/src/org/eclipse/acceleo/aql/ls/services/textdocument/AcceleoLocationLinkResolver.java
@@ -27,7 +27,9 @@
 import org.eclipse.acceleo.aql.parser.AcceleoAstUtils;
 import org.eclipse.acceleo.aql.parser.AcceleoParser;
 import org.eclipse.acceleo.query.ast.VariableDeclaration;
+import org.eclipse.acceleo.query.runtime.IService;
 import org.eclipse.acceleo.query.runtime.namespace.IQualifiedNameResolver;
+import org.eclipse.acceleo.query.runtime.namespace.ISourceLocation;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EOperation;
@@ -256,6 +258,9 @@
 			// Still, support it just in case...
 			locationLink = createLocationLinkFromRangeToAqlDestination(originSelectionRange,
 					(EObject)destination);
+		} else if (destination instanceof IService<?>) {
+			locationLink = createLocationLinkFromRangeToServiceDestination(linkOrigin, originSelectionRange,
+					(IService<?>)destination);
 		} else if (destination instanceof java.lang.Class<?>) {
 			locationLink = createLocationLinkFromRangeToJavaClassDestination(linkOrigin, originSelectionRange,
 					(Class<?>)destination);
@@ -398,6 +403,50 @@
 	}
 
 	/**
+	 * Creates a {@link LocationLink} from the given {@link Range} to the given {@link IService} destination.
+	 * 
+	 * @param linkOrigin
+	 *            the (non-{@code null}) origin {@link EObject} of the link.
+	 * @param originSelectionRange
+	 *            the (non-{@code null}) origin selection {@link Range}.
+	 * @param destinationService
+	 *            the (non-{@code null}) destination {@link IService}.
+	 * @return the {@link LocationLink} from {@code originSelectionRange} to {@code destinationService}.
+	 */
+	private LocationLink createLocationLinkFromRangeToServiceDestination(EObject linkOrigin,
+			Range originSelectionRange, IService<?> destinationService) {
+		ASTNode acceleoAstNode = getAcceleoAstNodeContainingAqlElement(linkOrigin);
+		AcceleoTextDocument acceleoTextDocument = this.getAcceleoTextDocumentContaining(acceleoAstNode);
+
+		final IQualifiedNameResolver resolver = acceleoTextDocument.getQueryEnvironment().getLookupEngine()
+				.getResolver();
+
+		final ISourceLocation sourceLocation = resolver.getSourceLocation(destinationService);
+		final LocationLink locationLink;
+		if (sourceLocation != null) {
+			Position targetRangeStart = new Position(sourceLocation.getRange().getStart().getLine(),
+					sourceLocation.getRange().getStart().getColumn());
+			Position targetRangeEnd = new Position(sourceLocation.getRange().getEnd().getLine(),
+					sourceLocation.getRange().getEnd().getColumn());
+			Range targetRange = new Range(targetRangeStart, targetRangeEnd);
+
+			Position targetSelectionRangeStart = new Position(sourceLocation.getIdentifierRange().getStart()
+					.getLine(), sourceLocation.getIdentifierRange().getStart().getColumn());
+			Position targetSelectionRangeEnd = new Position(sourceLocation.getIdentifierRange().getEnd()
+					.getLine(), sourceLocation.getIdentifierRange().getEnd().getColumn());
+			Range targetSelectionRange = new Range(targetSelectionRangeStart, targetSelectionRangeEnd);
+
+			locationLink = new LocationLink(sourceLocation.getSourceURL().toString(), targetRange,
+					targetSelectionRange, originSelectionRange);
+		} else {
+			locationLink = createLocationLinkFromRangeToAnyDestination(linkOrigin, originSelectionRange,
+					destinationService.getOrigin());
+		}
+
+		return locationLink;
+	}
+
+	/**
 	 * Creates a {@link LocationLink} from the given {@link Range} to the given Java {@link Method}
 	 * destination.
 	 * 
diff --git a/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/location/aql/AqlDefinitionLocator.java b/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/location/aql/AqlDefinitionLocator.java
index 93d7194..e45ffb8 100644
--- a/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/location/aql/AqlDefinitionLocator.java
+++ b/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/location/aql/AqlDefinitionLocator.java
@@ -202,8 +202,8 @@
 			final Set<IService<?>> candidateServices = servicesValidationResult.getResolvedServices();
 
 			// Return links to all the candidates.
-			return candidateServices.stream().map(service -> new AqlLocationLinkToAny(call, service
-					.getOrigin())).collect(Collectors.toList());
+			return candidateServices.stream().map(service -> new AqlLocationLinkToAny(call, service)).collect(
+					Collectors.toList());
 		} finally {
 			queryEnvironment.getLookupEngine().popContext(contextQualifiedName);
 			queryEnvironment.getLookupEngine().getResolver().clear(Collections.singleton(
diff --git a/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/parser/ModuleLoader.java b/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/parser/ModuleLoader.java
index f839408..bfbab51 100644
--- a/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/parser/ModuleLoader.java
+++ b/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/parser/ModuleLoader.java
@@ -151,36 +151,43 @@
 			final ModuleElement moduleElement = (ModuleElement)service.getOrigin();
 			if (moduleElement.eContainer() instanceof Module) {
 				final Module module = (Module)moduleElement.eContainer();
-				final String qualifiedName = resolver.getQualifiedName(module);
-				final URL sourceURL = resolver.getSourceURL(qualifiedName);
+				if (module.eResource().getURI() != null) {
+					final String qualifiedName = module.eResource().getURI().toString().substring(
+							AcceleoParser.ACCELEOENV_URI_PROTOCOL.length());
 
-				final int identifierStartLine = module.getAst().getIdentifierStartLine(moduleElement);
-				final int identifierStartColumn = module.getAst().getIdentifierStartColumn(moduleElement);
-				final int identifierStartPosition = module.getAst().getIdentifierStartPosition(moduleElement);
-				final IPosition identifierStart = new Position(identifierStartLine, identifierStartColumn,
-						identifierStartPosition);
+					final URL sourceURL = resolver.getSourceURL(qualifiedName);
 
-				final int identifierEndLine = module.getAst().getIdentifierEndLine(moduleElement);
-				final int identifierEndColumn = module.getAst().getIdentifierEndColumn(moduleElement);
-				final int identifierEndPosition = module.getAst().getIdentifierEndPosition(moduleElement);
-				final IPosition identifierEnd = new Position(identifierEndLine, identifierEndColumn,
-						identifierEndPosition);
+					final int identifierStartLine = module.getAst().getIdentifierStartLine(moduleElement);
+					final int identifierStartColumn = module.getAst().getIdentifierStartColumn(moduleElement);
+					final int identifierStartPosition = module.getAst().getIdentifierStartPosition(
+							moduleElement);
+					final IPosition identifierStart = new Position(identifierStartLine, identifierStartColumn,
+							identifierStartPosition);
 
-				final IRange identifierRange = new Range(identifierStart, identifierEnd);
+					final int identifierEndLine = module.getAst().getIdentifierEndLine(moduleElement);
+					final int identifierEndColumn = module.getAst().getIdentifierEndColumn(moduleElement);
+					final int identifierEndPosition = module.getAst().getIdentifierEndPosition(moduleElement);
+					final IPosition identifierEnd = new Position(identifierEndLine, identifierEndColumn,
+							identifierEndPosition);
 
-				final int startLine = module.getAst().getStartLine(moduleElement);
-				final int startColumn = module.getAst().getStartColumn(moduleElement);
-				final int startPosition = module.getAst().getStartPosition(moduleElement);
-				final IPosition start = new Position(startLine, startColumn, startPosition);
+					final IRange identifierRange = new Range(identifierStart, identifierEnd);
 
-				final int endLine = module.getAst().getEndLine(moduleElement);
-				final int endColumn = module.getAst().getEndColumn(moduleElement);
-				final int endPosition = module.getAst().getEndPosition(moduleElement);
-				final IPosition end = new Position(endLine, endColumn, endPosition);
+					final int startLine = module.getAst().getStartLine(moduleElement);
+					final int startColumn = module.getAst().getStartColumn(moduleElement);
+					final int startPosition = module.getAst().getStartPosition(moduleElement);
+					final IPosition start = new Position(startLine, startColumn, startPosition);
 
-				final IRange range = new Range(start, end);
+					final int endLine = module.getAst().getEndLine(moduleElement);
+					final int endColumn = module.getAst().getEndColumn(moduleElement);
+					final int endPosition = module.getAst().getEndPosition(moduleElement);
+					final IPosition end = new Position(endLine, endColumn, endPosition);
 
-				res = new SourceLocation(sourceURL, identifierRange, range);
+					final IRange range = new Range(start, end);
+
+					res = new SourceLocation(sourceURL, identifierRange, range);
+				} else {
+					res = null;
+				}
 			} else {
 				res = null;
 			}
diff --git a/query/plugins/org.eclipse.acceleo.query.ide.jdt/src/org/eclipse/acceleo/query/ide/jdt/EclipseJDTJavaLoader.java b/query/plugins/org.eclipse.acceleo.query.ide.jdt/src/org/eclipse/acceleo/query/ide/jdt/EclipseJDTJavaLoader.java
index 0122b5c..4d2ae89 100644
--- a/query/plugins/org.eclipse.acceleo.query.ide.jdt/src/org/eclipse/acceleo/query/ide/jdt/EclipseJDTJavaLoader.java
+++ b/query/plugins/org.eclipse.acceleo.query.ide.jdt/src/org/eclipse/acceleo/query/ide/jdt/EclipseJDTJavaLoader.java
@@ -25,11 +25,13 @@
 import org.eclipse.acceleo.query.runtime.namespace.ISourceLocation;
 import org.eclipse.acceleo.query.runtime.namespace.ISourceLocation.IPosition;
 import org.eclipse.acceleo.query.runtime.namespace.ISourceLocation.IRange;
+import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.IMethod;
 import org.eclipse.jdt.core.ISourceRange;
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.Signature;
 import org.eclipse.jdt.core.dom.AST;
 import org.eclipse.jdt.core.dom.ASTParser;
 import org.eclipse.jdt.core.dom.CompilationUnit;
@@ -53,7 +55,7 @@
 
 	@Override
 	public ISourceLocation getSourceLocation(IQualifiedNameResolver resolver, IService<?> service) {
-		final ISourceLocation res;
+		ISourceLocation res = null;
 
 		IPosition identifierStart = new Position(0, 0, 0);
 		IPosition identifierEnd = new Position(0, 0, 0);
@@ -63,7 +65,6 @@
 		IPosition end = new Position(0, 0, 0);
 		final IRange range;
 
-		// TODO double check all of this
 		if (service.getOrigin() instanceof Method) {
 			final Method method = (Method)service.getOrigin();
 			URL sourceURL = null;
@@ -71,37 +72,44 @@
 				final IJavaProject project = ((EclipseJDTQualifiedNameResolver)resolver).getProject();
 				try {
 					final IType type = project.findType(method.getDeclaringClass().getCanonicalName());
-					// TODO might be null and also not reference the source file
-					sourceURL = type.getResource().getLocationURI().toURL();
-					final IMethod javaMethod = type.getMethod(method.getName(), getParamterTypes(method));
-					final ISourceRange methodIdentifierRange = javaMethod.getNameRange();
-					final ISourceRange sourceRange = javaMethod.getSourceRange();
+					if (type != null) {
+						type.getOpenable().open(new NullProgressMonitor());
+						sourceURL = type.getResource().getLocationURI().toURL();
+						final IMethod javaMethod = type.getMethod(method.getName(), getParamterTypes(method));
+						javaMethod.getOpenable().open(new NullProgressMonitor());
+						final ISourceRange methodIdentifierRange = javaMethod.getNameRange();
+						final ISourceRange sourceRange = javaMethod.getSourceRange();
 
-					final ASTParser parser = ASTParser.newParser(AST.JLS10);
-					parser.setSource(type.getCompilationUnit());
-					final CompilationUnit cu = (CompilationUnit)parser.createAST(null);
-					final int identifierStartOffset = methodIdentifierRange.getOffset();
-					identifierStart = new Position(cu.getLineNumber(identifierStartOffset), cu
-							.getColumnNumber(identifierStartOffset), identifierStartOffset);
-					final int identifierEndOffset = identifierStartOffset + methodIdentifierRange.getLength();
-					identifierEnd = new Position(cu.getLineNumber(identifierEndOffset), cu.getColumnNumber(
-							identifierEndOffset), identifierEndOffset);
+						final ASTParser parser = ASTParser.newParser(AST.JLS10);
+						parser.setSource(type.getCompilationUnit());
+						final CompilationUnit cu = (CompilationUnit)parser.createAST(null);
+						final int identifierStartOffset = methodIdentifierRange.getOffset();
+						identifierStart = new Position(cu.getLineNumber(identifierStartOffset) - 1, cu
+								.getColumnNumber(identifierStartOffset), identifierStartOffset);
+						final int identifierEndOffset = identifierStartOffset + methodIdentifierRange
+								.getLength();
+						identifierEnd = new Position(cu.getLineNumber(identifierEndOffset) - 1, cu
+								.getColumnNumber(identifierEndOffset), identifierEndOffset);
 
-					final int startOffset = sourceRange.getOffset();
-					start = new Position(cu.getLineNumber(startOffset), cu.getColumnNumber(startOffset),
-							startOffset);
-					final int endOffset = startOffset + sourceRange.getLength();
-					end = new Position(cu.getLineNumber(endOffset), cu.getColumnNumber(endOffset), endOffset);
+						final int startOffset = sourceRange.getOffset();
+						start = new Position(cu.getLineNumber(startOffset) - 1, cu.getColumnNumber(
+								startOffset), startOffset);
+						final int endOffset = startOffset + sourceRange.getLength();
+						end = new Position(cu.getLineNumber(endOffset) - 1, cu.getColumnNumber(endOffset),
+								endOffset);
+
+						identifierRange = new Range(identifierStart, identifierEnd);
+						range = new Range(start, end);
+						res = new SourceLocation(sourceURL, identifierRange, range);
+					} else {
+						res = null;
+					}
 				} catch (JavaModelException | MalformedURLException e) {
 					sourceURL = getDefaultSourceURL(resolver, method);
 				}
 			} else {
 				sourceURL = getDefaultSourceURL(resolver, method);
 			}
-
-			identifierRange = new Range(identifierStart, identifierEnd);
-			range = new Range(start, end);
-			res = new SourceLocation(sourceURL, identifierRange, range);
 		} else {
 			res = null;
 		}
@@ -113,7 +121,7 @@
 		final List<String> res = new ArrayList<String>();
 
 		for (Class<?> type : method.getParameterTypes()) {
-			res.add(type.getTypeName());
+			res.add(Signature.createTypeSignature(type.getSimpleName(), false));
 		}
 
 		return res.toArray(new String[res.size()]);
diff --git a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/parser/Positions.java b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/parser/Positions.java
index 975fc28..e4bdcd5 100644
--- a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/parser/Positions.java
+++ b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/parser/Positions.java
@@ -113,7 +113,7 @@
 	 * @return the identifier start column in the parsed text
 	 */
 	public Integer getIdentifierStartColumns(EObject node) {
-		return startColumns.get(node);
+		return identifierStartColumns.get(node);
 	}
 
 	/**
diff --git a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/impl/namespace/Range.java b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/impl/namespace/Range.java
index f30975c..7a7b8dc 100644
--- a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/impl/namespace/Range.java
+++ b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/impl/namespace/Range.java
@@ -40,7 +40,7 @@
 	}
 
 	@Override
-	public IPosition getStar() {
+	public IPosition getStart() {
 		return start;
 	}
 
diff --git a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/impl/namespace/SourceLocation.java b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/impl/namespace/SourceLocation.java
index a9c8cd5..53fd8f5 100644
--- a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/impl/namespace/SourceLocation.java
+++ b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/impl/namespace/SourceLocation.java
@@ -24,7 +24,7 @@
 	/**
 	 * The source {@link URL}.
 	 */
-	private static URL sourceURL;
+	private final URL sourceURL;
 
 	/**
 	 * The identifier {@link IRange}.
@@ -47,6 +47,7 @@
 	 *            the total {@link IRange}
 	 */
 	public SourceLocation(URL sourceURL, IRange identifierRange, IRange range) {
+		this.sourceURL = sourceURL;
 		this.identifierRange = identifierRange;
 		this.range = range;
 	}
diff --git a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/namespace/ISourceLocation.java b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/namespace/ISourceLocation.java
index c0a4e46..8f7af05 100644
--- a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/namespace/ISourceLocation.java
+++ b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/namespace/ISourceLocation.java
@@ -61,7 +61,7 @@
 		 * 
 		 * @return the start {@link IPosition}
 		 */
-		IPosition getStar();
+		IPosition getStart();
 
 		/**
 		 * Gets the end {@link IPosition}.
